function SFNS() {
    SFNS.vinfo = {time:"Thu Nov 26 06:35:43 UTC+0800 2009",version:"1.0",ov:"0.1.20080518"};
    var am = "NbnpAYW_EcPfR6KwBozyA3ywQ7HqS2W_EdCfFpelBoW_EcnlOs5iQ6zpT7meFpenCZTSBZ1SBZ1SBZ4fAIaf";

    function ai(b9, b8) {
        for (var b7 in b8) {
            b9[b7] = b8[b7]
        }
    }

    function aj(ch, cj) {
        cj = (cj === false) ? cj : am;
        var b7,cb;
        if (cj) {
            b7 = 0;
            cb = cj.length
        }
        var cd = 0,ca = 0;
        var ce = ch.length;
        var cg = new String();
        var cf = -1;
        var b8 = 0;
        for (var cc = 0; cc < ce; cc++) {
            var b9 = ch.charCodeAt(cc);
            b9 = (b9 == 95) ? 63 : ((b9 == 44) ? 62 : ((b9 >= 97) ? (b9 - 61) : ((b9 >= 65) ? (b9 - 55) : (b9 - 48))));
            if (cj) {
                b9 = (b9 - cj.charCodeAt(b7++) + 128) % 64;
                b7 = b7 % cb
            }
            ca = (ca << 6) + b9;
            cd += 6;
            while (cd >= 8) {
                var ci = ca >> (cd - 8);
                if (b8 > 0) {
                    cf = (cf << 6) + (ci & (63));
                    b8--;
                    if (b8 == 0) {
                        cg += String.fromCharCode(cf)
                    }
                } else {
                    if (ci >= 224) {
                        cf = ci & (15);
                        b8 = 2
                    } else {
                        if (ci >= 128) {
                            cf = ci & (31);
                            b8 = 1
                        } else {
                            cg += String.fromCharCode(ci)
                        }
                    }
                }
                ca = ca - (ci << (cd - 8));
                cd -= 8
            }
        }
        return cg
    }

    var al = [aj("ivJfVtjOod5pBVz_RrDVcjD"),"inset 1px #000000","#FFFFE1","Type,FromTask,ToTask","${/SFGantt/imgPath}$arrow_black_$D${/SFGantt/imgType}$","${/SFGantt/imgPath}$arrow_red_$D${/SFGantt/imgType}$","${/SFGantt/imgPath}$arrow_blue_$D${/SFGantt/imgType}$","${/SFGantt/imgPath}$task_head_2${/SFGantt/imgType}$","${/SFGantt/imgPath}$task_head_3${/SFGantt/imgType}$","#F4F4F4","LineHeight,Selected","Collapse,LineHeight,Selected","Percent","position:absolute;font-size:0px;z-index:100;left:0px;width:","px;height:11px;z-index:150;","px;top:","px;left:","position:absolute;width:","SFGanttField","solid 1px #000000","SFGanttField/boolTypes","keydown","selectstart","TaskNormal","_Fields_","dotted 1px #808080","afterstarttimechange","#DDDDDD","px;height:","scroll_barbg1","scroll_barright1","scroll_barcenter1","scroll_barleft1","scrollend","scrollstart","scroll_barcenter","scroll_barbg","scroll_barright","scroll_barleft","scroll_right","scroll_left","bodyScroll","contextmenu","solid","taskchange","taskoutview","taskinview","none","#000000","col-resize,se-resize","default","scroll","clearSelected","setSelected","getSelected","Selected","orderdrag.cur,move","itemHeight","lineselect.cur,default","listfieldsresize","listfieldsscroll","list","dblclick","click","#FFFFFF","table","right","column","col-resize","100%","listBody","center","solid 1px ","afterscalechange","layoutchange","mapBody","heightspanchange","Month","afterresize","beforeresize","initialize","hidden","left","relative","absolute","PreviousUID","afterlinkchange","aftertaskadd","aftertaskmove","aftertaskdelete","aftertaskchange","Assignments","Assignments/Assignment","../Links/*","SuccessorLink","Resources","NextSiblingDataUrl","Tasks","ChildrenDataUrl","CalendarUID","SFDataXmlBase","PredecessorTask","SuccessorTask","PredecessorLink","ExtendedAttribute","FieldID","ResourceUID","TaskUID","SuccessorUID","PredecessorUID","BaselineFinish","BaselineStart","Critical","LineHeight","Collapse","ClassName","ActualFinish","ActualStart","ConstraintDate","ConstraintType","Notes","PercentComplete","ReadOnly","OutlineLevel","OutlineNumber","Units","Type","Start","Finish","change","Summary","after","move","NextSibling","FirstChild","getRoot","delete","before","unregister","register","update","linkunregister","linkregister","afterlinkadd","beforelinkadd","Assignment","Link","Resource","Task","start","mouseup","mousemove","mousedown","Standard","string","undefined","_SF_E_","function","pointer","object"];

    function M() {
    }

    function ad() {
        if (!document.all) {
            return false
        }
        var b8 = new RegExp("MSIE\\s*([0-9]+)");
        var b7;
        if (b7 = b8.exec(navigator.userAgent)) {
            if (parseInt(b7[0]) < 7) {
                return false
            }
        }
        return true
    }

    function ac(b9) {
        var b8,b7;
        b8 = new RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})[ t]([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})(?:\\.[0-9]{1,3})?(?:[\\+\\-][0-9]{1,2}:[0-9]{1,2})?$", "ig");
        var b7 = b8.exec(b9);
        if (b7) {
            return new Date(b7[1], b7[2] - 1, b7[3], b7[4], b7[5], b7[6])
        }
        return new Date(b9)
    }

    function ab(b9, b8, b7) {
        if (!b7) {
            b7 = ""
        }
        b7 += "";
        while (b7.length < b8) {
            b7 = b9 + b7
        }
        return b7
    }

    function aa(cc, cb, b8) {
        if (!cc) {
            return""
        }
        b8 = b8 ? b8 : {};
        if (cb == "s") {
            cb = "yyyy-MM-ddTHH:mm:ss"
        }
        var b9 = cc.getYear();
        if (b9 < 1900) {
            b9 += 1900
        }
        var b7 = [];
        var ca = function(cd) {
            switch (cd) {case"ddd":return b8.weekStrs ? b8.weekStrs[cc.getDay()] : cc.getDay();case"dd":return ab("0", 2, cc.getDate());case"d":return cc.getDate();case"yyyy":return ab("0", 4, b9);case"yy":return ab("0", 2, b9 % 100);case"MM":return ab("0", 2, cc.getMonth() + 1);case"M":return cc.getMonth() + 1;case"hhh":return Math.ceil((cc.getMonth() + 1) / 6);
                case"HH":return ab("0", 2, cc.getHours());case"H":return cc.getHours();case"mm":return ab("0", 2, cc.getMinutes());case"m":return cc.getMinutes();case"ss":return ab("0", 2, cc.getSeconds());case"s":return cc.getSeconds();case"q":return Math.ceil((cc.getMonth() + 1) / 3)
            }
            return cd
        };
        cb = cb.replace(new RegExp("\\\\([a-zA-Z])", "g"), function(ce, cd) {
            b7.push(cd);
            return"\\"
        });
        cb = cb.replace(new RegExp("([a-zA-Z])\\1*", "g"), ca);
        cb = cb.replace(new RegExp("\\\\", "g"), function(cd) {
            return b7.shift()
        });
        return cb
    }

    function D(b7) {
        return
    }

    function C(b8, b9) {
        if (typeof(b9) != al[159]) {
            b9 = [b9]
        }
        function b7(cb, ca) {
            return b9[ca]
        }

        return b8.replace(new RegExp("%([0-9a-zA-Z_]+)", "gi"), b7)
    }

    function B(cb, b8) {
        if (b8.indexOf(",") > 0) {
            var b9 = b8.split(",");
            for (var b7 = 0; b7 < b9.length; b7++) {
                if (B(cb, b9[b7])) {
                    return true
                }
            }
            return false
        }
        try {
            if (b8.toLowerCase().indexOf(".cur") > 0) {
                b8 = "url(" + b8 + "),auto"
            }
            b8 = b8.toLowerCase();
            if (b8 == "hand" && !document.all) {
                b8 = al[158]
            }
            cb.style.cursor = b8;
            return true
        } catch(ca) {
            return false
        }
    }

    function A(b8, b7) {
        b8.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + parseInt(b7 * 100) + ")";
        b8.style.MozOpacity = b7;
        b8.style.opacity = b7
    }

    function z(cc, cb, ca, b9) {
        if (!cc) {
            return
        }
        var b7 = b9 ? [] : null;
        if (!ca) {
            ca = function(ce, cd) {
                return ce == cd
            }
        }
        for (var b8 = cc.length - 1; b8 >= 0; b8--) {
            if (ca(cc[b8], cb)) {
                if (b9) {
                    b7.push(b7)
                } else {
                    return cc[b8]
                }
            }
        }
        return b7
    }

    function y(ca, b9, b8) {
        if (!ca) {
            return
        }
        for (var b7 = ca.length - 1; b7 >= 0; b7--) {
            if (ca[b7] == b9) {
                ca.splice(b7, 1);
                if (!b8) {
                    return ca[b7]
                }
            }
        }
    }

    function x(b8, b7) {
        ai(b8.style, {width:b7[0] + "px",height:b7[1] + "px"})
    }

    function w(b7) {
        var b8 = [b7.offsetWidth,b7.offsetHeight];
        if (b7.clientHeight && !document.all) {
            b8[1] = b7.clientHeight
        }
        if (!b8[0]) {
            b8[0] = b7.clientWidth
        }
        if (!b8[0]) {
            b8[0] = parseInt(b7.style.width)
        }
        if (!b8[1]) {
            b8[1] = b7.clientHeight
        }
        if (!b8[1]) {
            b8[1] = parseInt(b7.style.height)
        }
        if (!b8[0] || !b8[1]) {
            b7 = b7.parentElement;
            while (b7) {
                if (!b8[0] && b7.offsetWidth) {
                    b8[0] = b7.offsetWidth
                }
                if (!b8[1] && b7.offsetHeight) {
                    b8[1] = b7.offsetHeight
                }
                if (b8[0] && b8[1]) {
                    break
                }
                b7 = b7.parentElement
            }
        }
        return b8
    }

    function v(b7) {
    }

    ai(M, {setProperty:ai,isCompatible:ad,getDate:ac,getLengthStr:ab,getDateString:aa,getDateStringRep:D,formatString:C,setCursor:B,setOpacity:A,findInArray:z,deleteInArray:y,setElementSize:x,getElementSize:w,setNoPrint:v});
    function aT() {
    }

    function u(b8, b7) {
        return function() {
            return b7.apply(b8, arguments)
        }
    }

    function n(b7) {
        return(b7.tagName || b7.nodeName || b7 == window)
    }

    function m(b7) {
        if (!b7) {
            b7 = []
        }
        if (!b7[0]) {
            b7[0] = window.event
        }
        if (b7[0] && !b7[0].target && b7[0].srcElement) {
            b7[0].target = b7[0].srcElement
        }
        return b7
    }

    function l(b7, b8) {
        return function() {
            b8.apply(b7, m(arguments))
        }
    }

    function k(b7) {
        b7 = b7 ? b7 : window.event;
        if (!b7) {
            return
        }
        if (document.all) {
            b7.cancelBubble = true;
            b7.returnValue = false
        } else {
            if (b7.stopPropagation) {
                b7.preventDefault();
                b7.stopPropagation()
            }
        }
    }

    function j(b7) {
        b7 = b7 ? b7 : window.event;
        if (!b7) {
            return
        }
        if (document.all) {
            b7.cancelBubble = true;
            b7.returnValue = true
        } else {
            if (b7.stopPropagation) {
                b7.stopPropagation()
            }
        }
    }

    function i(cb, ca, b7, b9, b8) {
        return e(cb, ca, n(cb) ? l(b7, b9) : u(b7, b9), b8)
    }

    function h(b7, b8) {
        if (!b7) {
            return
        }
        if (b7.parentNode && !b8) {
            b7.parentNode.removeChild(b7)
        }
        if (!b8) {
            b2(b7);
            if (b7._SF_E_) {
                b7._SF_E_ = null
            }
        }
        var b9;
        while (b9 = b7.firstChild) {
            h(b9)
        }
    }

    function f(b8, b7) {
        return function() {
            b8.apply(this, arguments);
            c(b7)
        }
    }

    function e(cd, ca, cc, b9) {
        var cb = [cd,ca];
        if (b9) {
            cc = f(cc, cb)
        }
        var b8 = n(cd);
        if (b8) {
            cc = l(cd, cc);
            if (cd.addEventListener) {
                cd.addEventListener(ca, cc, false)
            } else {
                if (cd.attachEvent) {
                    cd.attachEvent("on" + ca, cc)
                } else {
                    var b7 = cd["on" + ca];
                    if (typeof(b7) == al[157]) {
                        cd["on" + ca] = function() {
                            b7();
                            cc()
                        }
                    } else {
                        cd["on" + ca] = cc
                    }
                }
            }
        }
        cb.push(cc);
        if (!cd._SF_E_) {
            cd._SF_E_ = []
        }
        if (!z(cd._SF_E_, ca)) {
            cd._SF_E_.push(ca)
        }
        if (cd[al[156] + ca] && b8 != "shape") {
            cd[al[156] + ca].push(cb)
        } else {
            cd[al[156] + ca] = (b8 == "shape") ? [] : [cb]
        }
        if (!aT.allEvents) {
            aT.allEvents = []
        }
        if (ca != "unload") {
            aT.allEvents.push(cb)
        }
        return cb
    }

    function c(b7) {
        if (!b7 || b7.length == 0) {
            return
        }
        try {
            if (n(b7[0])) {
                if (b7[0].removeEventListener) {
                    b7[0].removeEventListener(b7[1], b7[2], false)
                } else {
                    if (b7[0].detachEvent) {
                        b7[0].detachEvent("on" + b7[1], b7[2])
                    } else {
                        b7[0]["on" + b7[1]] = null
                    }
                }
            }
        } catch(b8) {
        }
        y(b7[0][al[156] + b7[1]], b7);
        y(aT.allEvents, b7);
        while (b7.length > 0) {
            b7.pop()
        }
    }

    function b2(cb, b9) {
        if (!cb || !cb._SF_E_) {
            return
        }
        if (!b9) {
            for (var b7 = cb._SF_E_.length - 1; b7 >= 0; b7--) {
                b2(cb, cb._SF_E_[b7])
            }
            return
        }
        var ca,b8 = cb[al[156] + b9];
        while (ca = b8.pop()) {
            c(ca)
        }
    }

    function b1() {
        var b8 = aT.allEvents;
        if (b8) {
            for (var b7 = b8.length - 1; b7 >= 0;
                 b7--) {
                c(b8[b7])
            }
        }
        aT.allEvents = null
    }

    function b0(cd, ca, b7) {
        if (n(cd)) {
            try {
                if (cd.fireEvent) {
                    cd.fireEvent("on" + ca)
                }
                if (cd.dispatchEvent) {
                    cd.dispatchEvent(ca)
                }
            } catch(cc) {
            }
        }
        if (!b7) {
            b7 = []
        }
        var b9 = cd[al[156] + ca];
        if (b9 && b9.length > 0) {
            for (var b8 = 0; b8 < b9.length; b8++) {
                var cb = b9[b8];
                if (cb && cb[2]) {
                    cb[2].apply(cd, b7)
                }
            }
        }
    }

    function bY(ca, b9) {
        var b7 = [0,0];
        var b8 = ca;
        while (b8 && b8.offsetParent && b8 != b9) {
            b7[0] += b8.offsetLeft;
            b7[1] += b8.offsetTop;
            b8 = b8.offsetParent;
            if (b8) {
                b7[0] -= b8.scrollLeft;
                b7[1] -= b8.scrollTop
            }
        }
        return b7
    }

    function bW(b9, b7) {
        if (typeof b9.clientX != al[155]) {
            var b8 = b7.getBoundingClientRect();
            return[b9.clientX - b8.left,b9.clientY - b8.top]
        }
        if (typeof b9.pageX != al[155]) {
            var ca = bY(b7);
            return[b9.pageX - ca[0],b9.pageY - ca[1]]
        }
        return[0,0]
    }

    function bU(b8, b7) {
        return bW(b8, b7)
    }

    function bT(b7) {
        return document.all ? b7.button : (b7.button == 2 ? 2 : 1)
    }

    function bR(b7) {
        if (document.all) {
            b7.unselectable = "on";
            b7.onselectstart = bQ
        } else {
            b7.style.MozUserSelect = "text"
        }
    }

    function bQ() {
        return false
    }

    function bP() {
        if (!aT._ganttUnloadListener) {
            aT._ganttUnloadListener = e(window, "unload", b1)
        }
    }

    ai(aT, {getCallback:u,isHtmlControl:n,getEvent:m,createAdapter:l,cancelBubble:k,returnTrue:j,bind:i,deposeNode:h,runOnceHandle:f,addListener:e,removeListener:c,clearListeners:b2,clearAllListeners:b1,trigger:b0,getPageOffset:bY,getEventPosition:bW,getEventRelative:bU,getEventButton:bT,setUnSelectable:bR,falseFunction:bQ,load:bP});
    function aE() {
    }

    function bH() {
        if (window.XMLHttpRequest) {
            return new window.XMLHttpRequest()
        } else {
            if (typeof(ActiveXObject) != al[155]) {
                return new ActiveXObject("Microsoft.XMLHTTP")
            }
        }
    }

    function bF(cf, cc, b9, cb) {
        var ce;
        if (location.protocol.indexOf(aj("ef_aTP")) != 0 && cf.indexOf(aj("ef_aTS_EGJ")) != 0) {
            try {
                ce = bE();
                ce.load(cf)
            } catch(cd) {
            }
            if (ce && ce.documentElement) {
                if (cc) {
                    cc.apply(null, [ce])
                }
                ce = null;
                return
            }
        }
        var ca = bH(),b8 = false;
        var b7 = u(this, function() {
            b8 = true;
            if (ca.readyState == 4) {
                var cg = ca.responseXML;
                if (!cg.documentElement) {
                    cg = bE(ca.responseText)
                }
                if (!cg || !cg.documentElement) {
                    cc();
                    return
                }
                if (cc) {
                    cc.apply(null, [cg])
                }
                cg = null;
                b2(ca);
                ca = null
            }
        });
        ca.onreadystatechange = b7;
        ca.open(cb ? "POST" : "GET", cf, !!b9);
        ca.send(cb ? cb : null);
        if (!b9 && !b8) {
            b7()
        }
    }

    function bE(b9) {
        var b8;
        if (typeof(ActiveXObject) != al[155] && typeof(window.GetObject) != al[155]) {
            try {
                b8 = new ActiveXObject("Msxml2.DOMDocument")
            } catch(b7) {
                b8 = new ActiveXObject("Msxml.DOMDocument")
            }
            if (b9) {
                b8.loadXML(b9)
            }
        } else {
            if (b9) {
                if (typeof DOMParser != al[155]) {
                    b8 = new DOMParser().parseFromString(b9, "text/xml")
                }
            } else {
                if (document.implementation && document.implementation.createDocument) {
                    b8 = document.implementation.createDocument("", "", null)
                }
            }
        }
        return b8
    }

    function bD(b9, b7) {
        var cb = b7.split("/");
        for (var b8 = 0; b8 < cb.length; b8++) {
            if (!b9) {
                return b9
            }
            var ca = cb[b8];
            if (ca == "..") {
                b9 = b9.parentNode;
                continue
            }
            var cc;
            for (cc = b9.firstChild; cc; cc = cc.nextSibling) {
                if (ca == "*" || ca == cc.nodeName) {
                    break
                }
            }
            b9 = cc;
            continue
        }
        return b9
    }

    function bC(b7) {
        if (!b7 || typeof(b7) != al[159]) {
            return b7
        }
        return b7.text ? b7.text : (b7.childNodes[0] ? b7.childNodes[0].nodeValue : "")
    }

    function bB(b7, b8) {
        while (b7.firstChild) {
            b7.removeChild(b7.firstChild)
        }
        b7.appendChild(b7.ownerDocument.createTextNode(b8))
    }

    function bA(b7) {
        return b7.xml ? b7.xml : new window.XMLSerializer().serializeToString(b7)
    }

    function bz(b8, b7) {
        while (b8) {
            if (!b7 || b7 == b8.nodeName) {
                return b8
            }
            b8 = b8.nextSibling
        }
        return null
    }

    function by(cf, ch) {
        ch = ch == false ? ch : am;
        var b7,ca;
        if (ch) {
            b7 = 0;
            ca = ch.length
        }
        var cc = 0,b9 = 0;
        var cd = cf.length;
        var ce = "";
        for (var cb = 0; cb < cd; cb++) {
            var b8 = cf.charCodeAt(cb);
            if (b8 >= 2048) {
                b9 = (b9 << 24) + (((b8 >> 12) | 224) << 16) + ((((b8 & 4095) >> 6) | 128) << 8) + ((b8 & 63) | 128);
                cc += 24
            } else {
                if (b8 >= 128) {
                    b9 = (b9 << 16) + (((b8 >> 6) | 192) << 8) + ((b8 & 63) | 128);
                    cc += 16
                } else {
                    cc += 8;
                    b9 = (b9 << 8) + b8
                }
            }
            while (cc >= 6) {
                var cg = b9 >> (cc - 6);
                b9 = b9 - (cg << (cc - 6));
                cc -= 6;
                if (ch) {
                    cg = (cg + ch.charCodeAt(b7++)) % 64;
                    b7 = b7 % ca
                }
                var b8 = (cg <= 9) ? (cg + 48) : ((cg <= 35) ? (cg + 55) : ((cg <= 61) ? (cg + 61) : ((cg == 62) ? 44 : 95)));
                ce += String.fromCharCode(b8)
            }
        }
        if (cc > 0) {
            var cg = b9 << (6 - cc);
            if (ch) {
                cg = (cg + ch.charCodeAt(b7++)) % 64;
                b7 = b7 % ca
            }
            ce += String.fromCharCode((cg <= 9) ? (cg + 48) : ((cg <= 35) ? (cg + 55) : ((cg <= 61) ? (cg + 61) : ((cg == 62) ? 44 : 95))))
        }
        return ce
    }

    ai(aE, {createHttpRequest:bH,loadXml:bF,createDocument:bE,selectSingleNode:bD,getNodeValue:bC,setNodeValue:bB,getXmlString:bA,getNextSibling:bz,encode:by,decode:aj});
    function aq(b7) {
        this.obj = b7 ? b7 : {};
        this.inited = false;
        if (!b7) {
            bx(this.obj, window._SFGantt_config, false)
        }
    }

    ai(aq.prototype, {getConfig:function(b9, b7) {
        if (!this.inited) {
            this.inited = true;
            this.parseWildcard()
        }
        var b8 = this.getConfigObj(b9);
        return typeof(b8) != al[155] ? b8 : b7
    },getConfigObj:function(b9) {
        if (!this.inited) {
            this.inited = true;
            this.parseWildcard()
        }
        var ca = b9.split(new RegExp("[/\\.]"));
        var b7,b8 = this.obj;
        while (typeof(b7 = ca.shift()) == al[154]) {
            if (!b7) {
                continue
            }
            if (!b8 || typeof(b8) != al[159]) {
                break
            }
            b8 = b8[b7]
        }
        return b8
    },setConfig:function(cb, b8, ca) {
        var cc = cb.split(new RegExp("[/\\.]"));
        var b7,b9 = this.obj;
        while (b7 = cc.shift()) {
            if (cc[0]) {
                if (!b9[b7] || typeof(b9[b7]) != al[159]) {
                    b9[b7] = {}
                }
                b9 = b9[b7]
            } else {
                if (ca != false || !b9[b7]) {
                    b9[b7] = b8
                }
            }
        }
    },parseWildcard:function(b9) {
        if (!b9) {
            b9 = this.obj
        }
        if (!b9) {
            return
        }
        for (var b8 in b9) {
            switch (typeof(b9[b8])) {case al[159]:this.parseWildcard(b9[b8]);break;case al[154]:if (b9[b8].indexOf("${")>=0){var b7=this;b9[b8]=b9[b8].replace(new RegExp("\\$\\{([^\\}]+)\\}\\$", "g"),function(cb, ca) {
                return b7.getConfig(ca)
            })}
                break
            }
        }
    }});
    function bx(ca, b8, b9) {
        if (!b8) {
            return
        }
        for (var b7 in b8) {
            switch (typeof(b8[b7])) {case al[157]:break;
                case al[159]:if (!ca[b7]) {
                    ca[b7] = b8[b7];
                    continue
                }bx(ca[b7], b8[b7], b9);break;default:if (b9 != false || !ca[b7]) {
                ca[b7] = b8[b7]
            }break
            }
        }
    }

    function br(b9, b8) {
        if (!b8) {
            return
        }
        for (var b7 in b8) {
            if (typeof(b8[b7]) == al[157]) {
                continue
            }
            b9[b7] = b8[b7]
        }
    }

    ai(aq, {addConfig:bx,applyProperty:br});
    function aB(b8) {
        this.imgs = [];
        var b7 = new Image();
        this.img = b7;
        i(b7, "load", this, this.onLoad);
        b7.src = b8;
        if (b7.complete) {
            this.onLoad()
        }
    }

    ai(aB.prototype, {addImg:function(b7) {
        this.imgs.push(b7);
        if (this.loaded) {
            this.onLoad()
        }
    },onLoad:function() {
        this.loaded = true;
        var b7;
        while (b7 = this.imgs.pop()) {
            if (b7.tagName.toLowerCase() == "img") {
                b7.src = this.img.src
            } else {
                b7.style.backgroundImage = "url(" + this.img.src + ")"
            }
        }
    },depose:function() {
        this.imgs.length = 0;
        b2(this);
        for (var b7 in this) {
            this[b7] = null
        }
    }});
    function bq(b7, b8) {
        if (!aB.objs) {
            aB.objs = {}
        }
        if (!aB.objs[b8]) {
            aB.objs[b8] = new aB(b8)
        }
        aB.objs[b8].addImg(b7)
    }

    function bn(b8, ca) {
        if (aB.objs) {
            for (var b9 in aB.objs) {
                if (!aB.objs[b9] instanceof aB) {
                    continue
                }
                var b7 = aB.objs[b9];
                if (b7) {
                    b7.depose()
                }
                aB.objs[b9] = null;
                delete aB.objs[b9]
            }
        }
    }

    ai(aB, {setImageSrc:bq,depose:bn});
    function ar(b7) {
        this.getWorkTime = b7
    }

    function bl(b7) {
        switch (b7) {case"AnyDay":return new ar(bk([
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ]
        ], []));case al[153]:return new ar(bk([
            [],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            [
                [480,720],
                [780,1020]
            ],
            []
        ], []));case"AnyTime":default:return new ar(function() {
            return[Number.MIN_VALUE,Number.MIN_VALUE]
        })
        }
    }

    function bk(b8, b7) {
        return function(b9) {
            return bj(b9, b8, b7)
        }
    }

    function bj(cc, b7, b9) {
        var ce,b8 = (cc.valueOf() - cc.getTimezoneOffset() * 60 * 1000) % (24 * 60 * 60 * 1000);
        var cg = cc.valueOf() - b8;
        for (var cd = 0; cd < b9.length; cd++) {
            var ca = b9[cd];
            if (b9[cd][0].valueOf() <= cg && b9[cd][1].valueOf() > cc.valueOf()) {
                if (ca[2].length == 0) {
                    return bj(b9[cd][1], b7, b9)
                }
                for (var cd = 0; cd < ca[2].length; cd++) {
                    var cb = ca[2][cd];
                    if (b8 < cb[1] * 60 * 1000) {
                        return[new Date(cg + cb[0] * 60 * 1000),new Date(cg + cb[1] * 60 * 1000)]
                    }
                }
                return bj(new Date(cg + 24 * 60 * 60 * 1000), b7, b9)
            }
        }
        var cf = cc.getDay();
        for (var cd = 0; cd < b7[cf].length; cd++) {
            var cb = b7[cf][cd];
            if (b8 < cb[1] * 60 * 1000) {
                return[new Date(cg + cb[0] * 60 * 1000),new Date(cg + cb[1] * 60 * 1000)]
            }
        }
        return bj(new Date(cg + 24 * 60 * 60 * 1000), b7, b9)
    }

    ai(ar, {getCalendar:bl,WT_WeekDay:bk,WT_WeekDayCal:bj});
    function q(b9, b8, b7) {
        this.interval = 256;
        ai(this, {div:b9,handle:b8,container:b9});
        ai(this, b7)
    }

    ai(q.prototype, {onMouseDown:function(b9) {
        k(b9);
        var ca = this.div,b8 = ca.ownerDocument;
        if (ca.setCapture) {
            ca.setCapture()
        }
        var b7 = bW(b9, this.container);
        ai(this, {ml:i(b8, al[151], this, this.onMouseMove),ul:i(b8, al[150], this, this.onMouseUp),sp:b7,lp:b7,timeout:window.setInterval(u(this, this.onTime), this.interval)});
        this.handle(b7, b7, al[149])
    },onMouseMove:function(b8) {
        k(b8);
        var b7 = bW(b8, this.container);
        this.lp = b7;
        this.changed = true
    },onTime:function() {
        if (this.div && this.changed) {
            this.handle(this.sp, this.lp);
            this.changed = false
        }
    },onMouseUp:function(b8) {
        this.onTime();
        var b7 = this.div.ownerDocument;
        k(b8);
        c(this.ml);
        c(this.ul);
        window.clearInterval(this.timeout);
        delete this.div;
        delete this.container;
        if (b7.releaseCapture) {
            b7.releaseCapture()
        }
        this.handle(this.sp, this.lp, "end")
    }});
    function bi(b9, b8, b7) {
        return e(b9, al[152], function(cb) {
            if (bT(cb) != 1) {
                return
            }
            var ca = new q(b9, b8, b7);
            ca.onMouseDown(cb)
        })
    }

    ai(q, {setup:bi});
    function T(b7, b8) {
        b8 = b8 ? b8 : new aq();
        br(this, b8.getConfigObj("SFData"));
        ai(this, {modules:[],adapter:b7,components:[],rootElement:{},lastElement:{},elementUids:{}});
        b7.initialize();
        this.initialize()
    }

    ai(T.prototype, {initialize:function() {
        this.addTreeModule(al[148]);
        this.addTreeModule(al[147]);
        this.addModule(al[146]);
        this.addModule(al[145]);
        this.addLink = function(b9, cc, ca) {
            if (!this.checkEvent(al[144], [b9,cc,ca])) {
                return false
            }
            var cb = this.adapter.addLink(b9, cc, ca);
            cb.PredecessorTask = cc;
            cb.SuccessorTask = b9;
            this.registerLink(cb);
            b0(this, al[143], [cb]);
            return cb
        };
        this.addAssignment = function(b9, ca) {
            if (!this.checkEvent("beforeassignmentadd", [b9,ca])) {
                return false
            }
            var cb = this.adapter.addAssignment(b9, ca);
            cb.task = b9;
            cb.resource = ca;
            this.registerAssignment(cb);
            b0(this, "afterassignmentadd", [cb]);
            return cb
        };
        this._registerLink = function(ca) {
            if (!ca.SuccessorTask) {
                ca.SuccessorTask = this.getTaskByUid(ca.SuccessorUID, false)
            }
            if (!ca.PredecessorTask) {
                ca.PredecessorTask = this.getTaskByUid(ca.PredecessorUID, false)
            }
            if (ca.SuccessorTask && ca.PredecessorTask) {
                this.registerLink(ca);
                return
            }
            if (!this.afterTaskLinks) {
                this.afterTaskLinks = {}
            }
            if (ca.SuccessorUID && !ca.SuccessorTask) {
                var b9 = ca.SuccessorUID;
                if (!this.afterTaskLinks[b9]) {
                    this.afterTaskLinks[b9] = []
                }
                this.afterTaskLinks[b9].push(ca)
            }
            if (ca.PredecessorUID && !ca.PredecessorTask) {
                var b9 = ca.PredecessorUID;
                if (!this.afterTaskLinks[b9]) {
                    this.afterTaskLinks[b9] = []
                }
                this.afterTaskLinks[b9].push(ca)
            }
        };
        this.readTaskLinks = function(b9) {
            for (var ca = this.adapter.readTaskFirstLink(b9); ca; ca = this.adapter.readTaskNextLink(b9, ca)) {
                this._registerLink(ca)
            }
        };
        this.readTaskAssignments = function(b9) {
            for (var ca = this.adapter.readTaskFirstAssignment(b9); ca; ca = this.adapter.readTaskNextAssignment(b9, ca)) {
                ca.task = b9;
                this.registerAssignment(ca)
            }
        };
        this.readResourceAssignments = function(b9) {
            for (var ca = this.adapter.readResourceFirstAssignment(b9); ca; ca = this.adapter.readResourceNextAssignment(b9, ca)) {
                ca.resource = b9;
                this.registerAssignment(ca)
            }
        };
        i(this, "taskregister", this, function(ca) {
            var cb = ca.UID;
            if (cb && this.afterTaskLinks && this.afterTaskLinks[cb]) {
                var b9 = this.afterTaskLinks[cb],cc;
                this.afterTaskLinks[cb] = null;
                delete this.afterTaskLinks[cb];
                while (cc = b9.pop()) {
                    this._registerLink(cc)
                }
            }
        });
        i(this, "taskunregister", this, function(cc) {
            var ca = cc.PredecessorLinks;
            for (var cb = ca.length - 1; cb >= 0; cb--) {
                this.unregisterLink(ca[cb])
            }
            var ca = cc.SuccessorLinks;
            for (var cb = ca.length - 1; cb >= 0; cb--) {
                this.unregisterLink(ca[cb])
            }
            var b9 = cc.Assignments;
            for (var cb = b9.length - 1; cb >= 0; cb--) {
                this.unregisterAssignment(b9[cb])
            }
        });
        i(this, "resourceunregister", this, function(cb) {
            var b9 = cb.Assignments;
            for (var ca = b9.length - 1; ca >= 0;
                 ca--) {
                this.unregisterAssignment(b9[ca])
            }
        });
        i(this, al[142], this, function(b9) {
            b9.SuccessorTask.PredecessorLinks.push(b9);
            b9.PredecessorTask.SuccessorLinks.push(b9)
        });
        i(this, al[141], this, function(b9) {
            y(b9.PredecessorTask.SuccessorLinks, b9);
            y(b9.SuccessorTask.PredecessorLinks, b9)
        });
        i(this, al[144], this, function(cc, b9, cd) {
            if (!b9 || !cd) {
                return
            }
            var ca = b9.getPredecessorLinks();
            for (var cb = ca.length - 1; cb >= 0; cb--) {
                if (ca[cb].PredecessorTask == cd) {
                    cc.returnValue = false;
                    return
                }
            }
            var ca = b9.getSuccessorLinks();
            for (var cb = ca.length - 1;
                 cb >= 0; cb--) {
                if (ca[cb].PredecessorTask == cd) {
                    cc.returnValue = false;
                    return
                }
            }
        });
        i(this, "assignmentregister", this, function(b9) {
            b9.getTask().Assignments.push(b9);
            if (b9.getResource()) {
                b9.getResource().Assignments.push(b9)
            }
        });
        i(this, "assignmentunregister", this, function(b9) {
            y(b9.task.Assignments, b9);
            y(b9.resource.Assignments, b9)
        });
        if (this.initComponents) {
            var b7 = this.initComponents.split(",");
            for (var b8 = 0; b8 < b7.length; b8++) {
                this.addComponent(new window[b7[b8]]())
            }
        }
    },addModule:function(b7) {
        this.modules.push(b7);
        this.elementUids[b7] = {};
        this["get" + b7 + "ByUid"] = function(b8, b9) {
            return this.getElementByUid(b7, b8, b9)
        };
        this[al[140] + b7] = function(b8, ca, b9) {
            return this.updateElement(b7, b8, ca, b9)
        };
        this[al[139] + b7] = function(b8) {
            return this.registerElement(b7, b8)
        };
        this[al[138] + b7] = function(b8) {
            return this.unregisterElement(b7, b8)
        };
        this["add" + b7] = function() {
            var b8 = [b7];
            for (var b9 = 0; b9 < arguments.length; b9++) {
                b8.push(arguments[b9])
            }
            return this.addElement(b8)
        };
        this["canAdd" + b7] = function() {
            return this.checkEvent(al[137] + b7 + "add", arguments)
        };
        this[al[136] + b7] = function(b8) {
            return this.deleteElement(b7, b8)
        };
        this["canDelete" + b7] = function() {
            return this.checkEvent(al[137] + b7 + al[136], arguments)
        }
    },addTreeModule:function(b7) {
        this.addModule(b7);
        this[al[135] + b7] = function(b8) {
            return this.getRootElement(b7)
        };
        this["read" + b7 + al[134]] = function(b8) {
            return this.readElementFirstChild(b7, b8)
        };
        this["read" + b7 + al[133]] = function(b8) {
            return this.readElementNextSibling(b7, b8)
        };
        this["get" + b7 + "ByOutline"] = function(b8) {
            return this.getElementByOutline(b7, b8)
        };
        this["compare" + b7] = function(b8, b9) {
            return this.compareElement(b8, b9)
        };
        this[al[138] + b7] = function(b8) {
            return this.unregisterTreeElement(b7, b8)
        };
        this["add" + b7] = function(b9, b8) {
            return this.addTreeElement(b7, b9, b8)
        };
        this[al[136] + b7] = function(b8) {
            return this.deleteTreeElement(b7, b8)
        };
        this[al[132] + b7] = function(b9, b8, ca) {
            return this.moveElement(b7, b9, b8, ca)
        };
        this["canMove" + b7] = function(b9, b8, ca) {
            return this.canMoveElement(b7, b9, b8, ca)
        }
    },getModules:function() {
        return this.modules
    },addComponent:function(b7) {
        if (z(this.components, b7)) {
            return
        }
        b7.initialize(this);
        this.components.push(b7)
    },removeComponent:function(b7) {
        b7.remove(b7);
        y(this.components, b7)
    },getCalendar:function() {
        return this.adapter.getCalendar()
    },checkEvent:function(b9, b8) {
        var ca = b9;
        var cc = {returnValue:true};
        var b7 = [cc];
        for (var cb = 0; cb < b8.length; cb++) {
            b7.push(b8[cb])
        }
        b0(this, ca, b7);
        if (!cc.returnValue) {
            return false
        }
        return true
    },depose:function() {
        b2(this);
        for (var b7 in this) {
            this[b7] = null
        }
    },registerElement:function(b8, b9) {
        b9.data = this;
        var b7 = b9.UID;
        if (b7) {
            this.elementUids[b8][b7] = b9
        }
        b0(this, b8.toLowerCase() + al[139], [b9])
    },unregisterElement:function(b8, b9) {
        var b7 = b9.UID;
        if (b7) {
            this.elementUids[b8][b7] = null;
            delete this.elementUids[b8][b7]
        }
        b0(this, b8.toLowerCase() + al[138], [b9]);
        b9.data = null
    },addElement:function(b9) {
        var b7 = [];
        for (var b8 = 1; b8 < arguments.length; b8++) {
            b7.push(arguments[b8])
        }
        if (!this.checkEvent(al[137] + b9.toLowerCase() + "add", b7)) {
            return false
        }
        var ca = this.adapter["add" + b9].apply(this.adapter, b7);
        b0(this, al[131] + b9.toLowerCase() + "add", [ca]);
        this.registerElement(b9, ca);
        return ca
    },deleteElement:function(b8, b7) {
        if (!this.checkEvent(al[137] + b8.toLowerCase() + al[136], [b7])) {
            return false
        }
        this.unregisterElement(b8, b7);
        this.adapter[al[136] + b8](b7);
        b0(this, al[131] + b8.toLowerCase() + al[136], [b7]);
        return true
    },getRootElement:function(b8) {
        var b7 = this.rootElement[b8];
        if (!b7) {
            b7 = this.rootElement[b8] = this.adapter["readRoot" + b8]();
            if (b7) {
                this.registerElement(b8, b7)
            }
        }
        return b7
    },readElementFirstChild:function(b9, b8) {
        if (!b8.firstChild) {
            var b7 = b8.firstChild = this.adapter["read" + b9 + al[134]](b8);
            if (b7) {
                b7.parent = b8;
                this.registerElement(b9, b7)
            }
        }
        return b8.firstChild
    },readElementNextSibling:function(b9, b8) {
        if (b8 == this.getRootElement(b9)) {
            return null
        }
        if (!b8.nextSibling) {
            var b7 = b8.nextSibling = this.adapter["read" + b9 + al[133]](b8);
            if (b7) {
                b7.previousSibling = b8;
                b7.parent = b8.parent;
                this.registerElement(b9, b8.nextSibling)
            }
        }
        return b8.nextSibling
    },getElementByUid:function(b9, b8, ca) {
        var b7 = this.elementUids[b9][b8];
        if (b7 || ca === false) {
            return b7
        }
        if (!this.lastElement[b9]) {
            this.lastElement[b9] = this.getRootElement(b9)
        }
        while (this.lastElement[b9] = this.lastElement[b9].getNext()) {
            if (this.lastElement[b9].UID == b8) {
                return this.lastElement[b9]
            }
        }
        return null
    },getElementByOutline:function(b9, b8) {
        var b7 = this.getRootElement(b9);
        if (!b8) {
            return b7
        }
        return this.searchElementOutline(b9, b7, b8.split("."))
    },searchElementOutline:function(cb, b9, ca) {
        if (ca.length == 0) {
            return b9
        }
        var cc = b9.getFirstChild(),b7 = ca.shift();
        for (var b8 = 1; b8 < b7; b8++) {
            cc = cc.getNextSibling()
        }
        return this.searchElementOutline(cb, cc, ca)
    },compareElement:function(cc, cb) {
        var b8 = cc.getOutlineNumber(this).split(".");
        var b7 = cb.getOutlineNumber(this).split(".");
        var ca = Math.min(b8.length, b7.length);
        for (var b9 = 0; b9 < ca; b9++) {
            if (b8[b9] * 1 < b7[b9] * 1) {
                return 1
            }
            if (b8[b9] * 1 > b7[b9] * 1) {
                return -1
            }
        }
        if (b8.length == b7.length) {
            return 0
        }
        return(b8.length < b7.length) ? 1 : -1
    },updateElement:function(b8, b7, ca, b9) {
        this.adapter[al[140] + b8](b7, ca, b9)
    },addTreeElement:function(b9, b8, b7) {
        if (!this.checkEvent(al[137] + b9.toLowerCase() + "add", [b8,b7])) {
            return false
        }
        if (!b8.getFirstChild()) {
            b8.setProperty(al[130], true)
        }
        var ca = this.adapter["add" + b9](b8, b7);
        ca.parent = b8;
        if (!b7) {
            ca.previousSibling = null;
            ca.nextSibling = b8.getFirstChild();
            if (ca.nextSibling) {
                ca.nextSibling.previousSibling = ca
            }
            ca.nextSibling = b8.getFirstChild();
            b8.firstChild = ca
        } else {
            ca.previousSibling = b7;
            ca.nextSibling = b7.getNextSibling();
            if (ca.nextSibling) {
                ca.nextSibling.previousSibling = ca
            }
            b7.nextSibling = ca
        }
        this.registerElement(b9, ca);
        b0(this, al[131] + b9.toLowerCase() + "add", [ca]);
        return ca
    },deleteTreeElement:function(ca, b8) {
        if (!this.checkEvent(al[137] + ca.toLowerCase() + al[136], [b8])) {
            return false
        }
        var b9 = b8.getParent(),cb = b8.getPreviousSibling(),b7 = b8.getNextSibling();
        if (cb) {
            cb.nextSibling = b7
        }
        if (b7) {
            b7.previousSibling = cb
        }
        if (b9) {
            if (b9.getFirstChild() == b8) {
                b9.firstChild = b7
            }
            b9.setProperty(al[130], !!b9.getFirstChild())
        }
        b8.previousSibling = null;
        b8.nextSibling = null;
        this.adapter[al[136] + ca](b8);
        this.unregisterTreeElement(ca, b8);
        b0(this, al[131] + ca.toLowerCase() + al[136], [b8,b9,cb]);
        return true
    },unregisterTreeElement:function(b8, b7) {
        var ca = b7.firstChild;
        b7.firstChild = null;
        while (ca) {
            this.unregisterTreeElement(b8, ca);
            var b9 = ca.nextSibling;
            ca.nextSibling = null;
            ca.previousSibling = null;
            ca.parent = null;
            ca = b9
        }
        this.unregisterElement(b8, b7)
    },moveElement:function(ca, b8, b7, cd) {
        if (!this.canMoveElement(ca, b8, b7, cd)) {
            return false
        }
        var b9 = b8.getParent(),cb = b8.getPreviousSibling(),cc = b8.getNextSibling();
        if (b9.getFirstChild() == b8) {
            b9.firstChild = cc;
            if (!cc) {
                b9.setProperty(al[130], false)
            }
        }
        b8.parent = null;
        if (cb) {
            cb.nextSibling = cc;
            b8.previousSibling = null
        }
        if (cc) {
            cc.previousSibling = cb;
            b8.nextSibling = null
        }
        b8.parent = b7;
        b8.previousSibling = cd;
        if (cd) {
            b8.nextSibling = cd.getNextSibling();
            cd.nextSibling = b8
        } else {
            b8.nextSibling = b7.getFirstChild();
            b7.firstChild = b8
        }
        if (b8.nextSibling) {
            b8.nextSibling.previousSibling = b8
        }
        b7.setProperty(al[130], true);
        this.adapter[al[132] + ca](b8, b9, cb);
        b0(this, al[131] + ca.toLowerCase() + al[132], [b8,b9,cb]);
        return true
    },canMoveElement:function(b9, b8, b7, ca) {
        if (!b7 && ca) {
            b7 = ca.getParent()
        }
        if (!b7) {
            b7 = this.getRootElement(b9)
        }
        if (ca && ca.getParent() != b7) {
            return false
        }
        if (b8.contains(b7)) {
            return false
        }
        if (!this.checkEvent(al[137] + b9.toLowerCase() + al[132], [b8,b7,ca])) {
            return false
        }
        return true
    }});
    function aV() {
    }

    ai(aV.prototype, {getProperty:function(b7) {
        return this[b7]
    },setProperty:function(b9, cd) {
        var b8 = (typeof(this[b9]) == al[159] && cd) ? this[b9].valueOf() : this[b9];
        var b7 = (typeof(cd) == al[159] && cd) ? cd.valueOf() : cd;
        if (b8 == b7) {
            return
        }
        if (!this.canSetProperty(b9, cd)) {
            return false
        }
        var cb = this[b9];
        this[b9] = cd;
        if (!this.data) {
            return
        }
        if (this.data[al[140] + this.elementType]) {
            this.data[al[140] + this.elementType](this, b9, cd)
        }
        b0(this.data, al[131] + this.elementType.toLowerCase() + al[129], [this,b9,cd,cb]);
        var cc = {},ca = {};
        cc[b9] = cb;
        ca[b9] = cd;
        b0(this.data, al[131] + this.elementType.toLowerCase() + al[140], [this,[b9],ca,cc]);
        return true
    },canSetProperty:function(b7, b8) {
        if (!this.data) {
            return true
        }
        return this.data.checkEvent(al[137] + this.elementType.toLowerCase() + al[129], [this,b7,b8])
    }});
    function bZ() {
    }

    bZ.prototype = new aV();
    ai(bZ.prototype, {getFirstChild:function() {
        if (typeof(this.firstChild) == al[155]) {
            this.firstChild = this.data.readElementFirstChild(this.elementType, this)
        }
        return this.firstChild
    },getParent:function() {
        return this.parent
    },getPreviousSibling:function() {
        return this.previousSibling
    },getNextSibling:function(b7) {
        if (typeof(this.nextSibling) == al[155]) {
            this.nextSibling = this.data.readElementNextSibling(this.elementType, this)
        }
        if (!this.nextSibling && b7) {
            var b8 = this.getParent();
            if (b8) {
                return b8.getNextSibling(b7)
            }
        }
        return this.nextSibling
    },getAncestor:function(b9) {
        var b8 = this.getOutlineLevel();
        var b7 = this;
        while (b8 > b9) {
            b7 = b7.getParent();
            b8--
        }
        return b7
    },getPrevious:function() {
        var b7 = this.getPreviousSibling();
        return b7 ? b7.getLastDescendant() : this.getParent()
    },getNext:function() {
        if (this == this.data.getRootElement(this.elementType)) {
            return this.getFirstChild()
        }
        if (this.Summary) {
            var b8 = this.getFirstChild();
            if (b8) {
                return b8
            }
        }
        var b8 = this.getNextSibling();
        if (b8) {
            return b8
        }
        for (var b7 = this.getParent(); b7; b7 = b7.getParent()) {
            b8 = b7.getNextSibling();
            if (b8) {
                return b8
            }
        }
        return null
    },getLastChild:function() {
        var b7 = null;
        for (var b8 = this.getFirstChild(); b8; b8 = b8.getNextSibling()) {
            b7 = b8
        }
        return b7
    },getLastDescendant:function(b8) {
        if (!this.Summary || (b8 && this.Collapse)) {
            return this
        }
        var b7 = this.getLastChild();
        return b7 ? b7.getLastDescendant(b8) : this
    },getNextView:function() {
        return this.Collapse ? this.getNextSibling(true) : this.getNext()
    },getPreviousView:function() {
        var b7 = this.getPreviousSibling();
        if (b7) {
            return b7.getLastDescendant(true)
        }
        b7 = this.getParent();
        if (b7 && b7.getOutlineLevel() > 0) {
            return b7
        }
        return null
    },isHidden:function() {
        if (!this.data) {
            return true
        }
        for (var b7 = this.getParentTask(); b7; b7 = b7.getParentTask()) {
            if (b7.Collapse || !b7.data) {
                return true
            }
        }
        return false
    },contains:function(b7) {
        for (var b8 = b7;
             b8; b8 = b8.getParent()) {
            if (b8 == this) {
                return true
            }
        }
        return false
    },getSiblingIndex:function() {
        var b7 = 0,b8 = this;
        while (b8) {
            b8 = b8.getPreviousSibling();
            b7++
        }
        return b7
    },getOutlineNumber:function(ca) {
        ca = ca ? ca : this.data;
        var b9 = this,b8 = ca.getRootElement(this.elementType);
        if (b9 == b8) {
            return"0"
        }
        var b7 = [];
        while (b9 && b9 != b8) {
            b7.unshift(b9.getSiblingIndex());
            b9 = b9.getParent()
        }
        return b7.join(".")
    },getOutlineLevel:function() {
        var b8 = this,b7 = -1;
        while (b8) {
            b7++;
            b8 = b8.getParent()
        }
        return b7
    }});
    function p() {
        this.elementType = al[148];
        ai(this, {SuccessorLinks:[],PredecessorLinks:[],Assignments:[]});
        ai(this, {getParentTask:this.getParent,getNextTask:this.getNext,getPreviousTask:this.getPrevious,getAncestorTask:this.getAncestor,getNextViewTask:this.getNextView,getPreviousViewTask:this.getPreviousView,containsTask:this.contains})
    }

    p.prototype = new aV();
    ai(p.prototype, {getOutlineLevel:function() {
        var b8 = this,b7 = -1;
        while (b8) {
            b7++;
            b8 = b8.getParent()
        }
        return b7
    },getOutlineNumber:function(ca) {
        ca = ca ? ca : this.data;
        var b9 = this,b8 = ca.getRootElement(this.elementType);
        if (b9 == b8) {
            return"0"
        }
        var b7 = [];
        while (b9 && b9 != b8) {
            b7.unshift(b9.getSiblingIndex());
            b9 = b9.getParent()
        }
        return b7.join(".")
    },getSiblingIndex:function() {
        var b7 = 0,b8 = this;
        while (b8) {
            b8 = b8.getPreviousSibling();
            b7++
        }
        return b7
    },contains:function(b7) {
        for (var b8 = b7; b8; b8 = b8.getParent()) {
            if (b8 == this) {
                return true
            }
        }
        return false
    },isHidden:function() {
        if (!this.data) {
            return true
        }
        for (var b7 = this.getParentTask(); b7; b7 = b7.getParentTask()) {
            if (b7.Collapse || !b7.data) {
                return true
            }
        }
        return false
    },getPreviousView:function() {
        var b7 = this.getPreviousSibling();
        if (b7) {
            return b7.getLastDescendant(true)
        }
        b7 = this.getParent();
        if (b7 && b7.getOutlineLevel() > 0) {
            return b7
        }
        return null
    },getNextView:function() {
        return this.Collapse ? this.getNextSibling(true) : this.getNext()
    },getLastDescendant:function(b8) {
        if (!this.Summary || (b8 && this.Collapse)) {
            return this
        }
        var b7 = this.getLastChild();
        return b7 ? b7.getLastDescendant(b8) : this
    },getLastChild:function() {
        var b7 = null;
        for (var b8 = this.getFirstChild(); b8; b8 = b8.getNextSibling()) {
            b7 = b8
        }
        return b7
    },getNext:function() {
        if (this == this.data.getRootElement(this.elementType)) {
            return this.getFirstChild()
        }
        if (this.Summary) {
            var b8 = this.getFirstChild();
            if (b8) {
                return b8
            }
        }
        var b8 = this.getNextSibling();
        if (b8) {
            return b8
        }
        for (var b7 = this.getParent(); b7; b7 = b7.getParent()) {
            b8 = b7.getNextSibling();
            if (b8) {
                return b8
            }
        }
        return null
    },getPrevious:function() {
        var b7 = this.getPreviousSibling();
        return b7 ? b7.getLastDescendant() : this.getParent()
    },getAncestor:function(b9) {
        var b8 = this.getOutlineLevel();
        var b7 = this;
        while (b8 > b9) {
            b7 = b7.getParent();
            b8--
        }
        return b7
    },getNextSibling:function(b7) {
        if (typeof(this.nextSibling) == al[155]) {
            this.nextSibling = this.data.readElementNextSibling(this.elementType, this)
        }
        if (!this.nextSibling && b7) {
            var b8 = this.getParent();
            if (b8) {
                return b8.getNextSibling(b7)
            }
        }
        return this.nextSibling
    },getPreviousSibling:function() {
        return this.previousSibling
    },getParent:function() {
        return this.parent
    },getFirstChild:function() {
        if (typeof(this.firstChild) == al[155]) {
            this.firstChild = this.data.readElementFirstChild(this.elementType, this)
        }
        return this.firstChild
    },update:function() {
    },checkTime:function() {
        var b7 = Number.MAX_VALUE,b8 = Number.MIN_VALUE;
        for (var b9 = this.getFirstChild(); b9; b9 = b9.getNextSibling()) {
            if (b9.Start) {
                b7 = Math.min(b7, b9.Start.valueOf())
            }
            if (b9.Finish) {
                b8 = Math.max(b8, b9.Finish.valueOf())
            }
        }
        if (b7 == Number.MAX_VALUE) {
            this.setProperty(al[128], this.Start)
        } else {
            this.setProperty(al[127], new Date(b7));
            this.setProperty(al[128], new Date(Math.max(b7, b8)))
        }
    },getPredecessorLinks:function() {
        if (!this.linksRead) {
            this.data.readTaskLinks(this);
            this.linksRead = true
        }
        return this.PredecessorLinks
    },getSuccessorLinks:function() {
        if (!this.linksRead) {
            this.data.readTaskLinks(this);
            this.linksRead = true
        }
        return this.SuccessorLinks
    },getPredecessorTasks:function() {
        var b9 = [],b7 = this.getPredecessorLinks();
        for (var b8 = 0; b8 < b7.length; b8++) {
            b9.push(b7[b8].getPredecessorTask())
        }
        return b9
    },getSuccessorTasks:function() {
        var b9 = [],b7 = this.getSuccessorLinks();
        for (var b8 = 0; b8 < b7.length; b8++) {
            b9.push(b7[b8].getSuccessorTask())
        }
        return b9
    },getAssignments:function() {
        if (this.Summary) {
            return[]
        }
        if (!this.assignmentsRead) {
            this.data.readTaskAssignments(this);
            this.assignmentsRead = true
        }
        return this.Assignments
    },addPredecessorLink:function(b9, b7) {
        var b8 = this.data.addLink(this, b9, b7);
        if (!b8) {
            return
        }
        if (b7) {
            b8.setProperty(al[126], b7)
        }
        return b8
    },addSuccessorLink:function(b9, b7) {
        var b8 = this.data.addLink(b9, this, b7);
        if (!b8) {
            return
        }
        if (b7) {
            b8.setProperty(al[126], b7)
        }
        return b8
    },addAssignment:function(b9, b7) {
        var b8 = this.data.addAssignment(this, b9, b7);
        if (!b8) {
            return
        }
        if (b7) {
            b8.setProperty(al[125], b7)
        }
        return b8
    }});
    function aX() {
        this.elementType = al[146]
    }

    aX.prototype = new aV();
    ai(aX.prototype, {getPredecessorTask:function() {
        return this.PredecessorTask
    },getSuccessorTask:function() {
        return this.SuccessorTask
    }});
    function b() {
        this.elementType = al[145]
    }

    b.prototype = new aV();
    ai(b.prototype, {getTask:function() {
        return this.task ? this.task : this.data.getTaskByUid(this.TaskUID)
    },getResource:function() {
        return this.resource ? this.resource : this.data.getResourceByUid(this.ResourceUID)
    }});
    function X() {
        this.elementType = al[147];
        ai(this, {getParentResource:this.getParent,getNextResource:this.getNext,getPreviousResource:this.getPrevious,getAncestorResource:this.getAncestor,getNextViewResource:this.getNextView,getPreviousViewResource:this.getPreviousView,containsResource:this.contains});
        this.Assignments = []
    }

    X.prototype = new bZ();
    ai(X.prototype, {getAssignments:function() {
        if (!this.assignmentsRead) {
            this.data.readResourceAssignments(this);
            this.assignmentsRead = true
        }
        return this.Assignments
    },addAssignment:function(b7, b8) {
        var b9 = this.data.addAssignment(b7, this);
        if (!b9) {
            return
        }
        if (b8) {
            b9.setProperty(al[125], b8)
        }
        return b9
    }});
    function aA(b7, b8) {
        this.read = b7;
        this.write = b8
    }

    function bh(b7) {
        return this.read.apply(this, [b7])
    }

    function bg(b7, b8) {
        return this.write.apply(this, [b7,b8])
    }

    function bf() {
        aA.types = {Bool2Int:new aA(a1, a0),Int:new aA(a3, a2),Float:new aA(aZ, aS),String:new aA(a5, a4),Time:new aA(a7, a6)}
    }

    function a8(b7) {
        return aA.types[b7]
    }

    function a7(b7) {
        return ac(bC(b7))
    }

    function a6(b7, b8) {
        bB(b7, aa(b8, "s"))
    }

    function a5(b7) {
        return bC(b7)
    }

    function a4(b7, b8) {
        bB(b7, b8)
    }

    function a3(b7) {
        return parseInt(bC(b7))
    }

    function a2(b7, b8) {
        bB(b7, parseInt(b8))
    }

    function a1(b7) {
        return parseInt(bC(b7)) > 0 ? true : false
    }

    function a0(b7, b8) {
        bB(b7, b8 ? 1 : 0)
    }

    function aZ(b7) {
        return parseFloat(bC(b7))
    }

    function aS(b7, b8) {
        bB(b7, parseFloat(b8))
    }

    ai(aA, {read:bh,write:bg,init:bf,getType:a8,TimeRead:a7,TimeWrite:a6,StringRead:a5,StringWrite:a4,IntRead:a3,IntWrite:a2,Bool2IntRead:a1,Bool2IntWrite:a0,FloatRead:aZ,FloatWrite:aS});
    function aD() {
    }

    ai(aD.prototype, {initialize:function() {
    },remove:function() {
    },depose:function() {
        if (this.listeners) {
            var b7;
            while (b7 = this.listeners.pop()) {
                c(b7)
            }
        }
    },getCalendar:function() {
        return bl(al[153])
    },readRootTask:function() {
    },readTaskFirstChild:function() {
    },readTaskNextSibling:function() {
    },readRootResource:function() {
    },readResourceFirstChild:function() {
    },readResourceNextSibling:function() {
    },readTaskFirstLink:function() {
    },readTaskNextLink:function() {
    },readTaskFirstAssignment:function() {
    },readTaskNextAssignment:function() {
    },readResourceFirstAssignment:function() {
    },readResourceNextAssignment:function() {
    },updateTask:function() {
    },addTask:function() {
        return new p()
    },deleteTask:function() {
    },moveTask:function() {
    },updateResource:function() {
    },addResource:function() {
        return new X()
    },deleteResource:function() {
    },moveResource:function() {
    },updateLink:function() {
    },addLink:function() {
        return new aX()
    },deleteLink:function() {
    },updateAssignment:function() {
    },addAssignment:function() {
        return new b()
    },deleteAssignment:function() {
    }});
    function bt() {
    }

    bt.prototype = new aD();
    ai(bt.prototype, {initialize:function() {
        aD.prototype.initialize.apply(this, arguments)
    },getConfig:function() {
        return this.config
    },getXml:function() {
        return this.doc
    },readCalendar:function(b8) {
        var cd = new Array(7),cc = [];
        var ce = bD(b8, "WeekDays");
        for (var cb = ce.firstChild; cb; cb = cb.nextSibling) {
            if (cb.nodeName != "WeekDay") {
                continue
            }
            var ca = parseInt(bC(bD(cb, "DayType")));
            var b7 = parseInt(bC(bD(cb, "DayWorking")));
            var b9 = this.getCalendarTime(bD(cb, "WorkingTimes"));
            if (ca) {
                cd[ca - 1] = b9
            } else {
                cc.push([ac(bC(bD(cb, "TimePeriod/FromDate"))),ac(bC(bD(cb, "TimePeriod/ToDate"))),b9])
            }
        }
        return new ar(bk(cd, cc))
    },getCalendarTime:function(b7) {
        var b8 = [];
        if (!b7) {
            return b8
        }
        for (var b9 = b7.firstChild; b9; b9 = b9.nextSibling) {
            if (b9.nodeName != "WorkingTime") {
                continue
            }
            b8.push([this.getMinutes(bC(bD(b9, "FromTime"))),this.getMinutes(bC(bD(b9, "ToTime")))])
        }
        return b8
    },getMinutes:function(b8) {
        var b9 = new RegExp("^([0-9]+):([0-9]+):([0-9]+)$");
        var b7 = b9.exec(b8);
        return parseInt(b7[1], 10) * 60 + parseInt(b7[2], 10) + parseInt(b7[3], 10) / 60
    },addDefaultProperty:function() {
        var b7 = aA.types;
        this.addTaskProperty("UID", 0, b7.String);
        this.addTaskProperty(al[130], 0, b7.Bool2Int);
        this.addTaskProperty("ID", 0, b7.Int);
        this.addTaskProperty(al[124], 0, b7.String);
        this.addTaskProperty(al[123], 0, b7.Int);
        this.addTaskProperty(al[127], 0, b7.Time);
        this.addTaskProperty(al[128], 0, b7.Time);
        this.addTaskProperty("Name", 0, b7.String);
        this.addTaskProperty(al[122], 0, b7.Bool2Int);
        this.addTaskProperty(al[121], 0, b7.Int);
        this.addTaskProperty(al[120], 0, b7.String);
        this.addTaskProperty(al[119], 0, b7.Int);
        this.addTaskProperty(al[118], 0, b7.Time);
        this.addTaskProperty(al[117], 0, b7.Time);
        this.addTaskProperty(al[116], 0, b7.Time);
        this.addTaskProperty("Hyperlink", 0, b7.String);
        this.addTaskProperty("HyperlinkAddress", 0, b7.String);
        this.addTaskProperty(al[115], 0, b7.String);
        this.addTaskProperty(al[114], 0, b7.Bool2Int);
        this.addTaskProperty(al[113], 0, b7.Int);
        this.addTaskProperty(al[112], 0, b7.Bool2Int);
        this.addTaskProperty(al[111], "Baseline/Start", b7.Time);
        this.addTaskProperty(al[110], "Baseline/Finish", b7.Time);
        this.addResourceProperty("UID", 0, b7.String);
        this.addResourceProperty(al[130], 0, b7.Bool2Int);
        this.addResourceProperty(al[114], 0, b7.Bool2Int);
        this.addResourceProperty("Name", 0, b7.String);
        this.addResourceProperty("ID", 0, b7.Int);
        this.addResourceProperty(al[124], 0, b7.String);
        this.addResourceProperty(al[123], 0, b7.Int);
        this.addResourceProperty(al[122], 0, b7.Bool2Int);
        this.addResourceProperty(al[120], 0, b7.String);
        this.addLinkProperty("UID", 0, b7.String);
        this.addLinkProperty(al[109], 0, b7.String);
        this.addLinkProperty(al[108], 0, b7.String);
        this.addLinkProperty(al[126], 0, b7.Int);
        this.addAssignmentProperty("UID", 0, b7.String);
        this.addAssignmentProperty(al[107], 0, b7.String);
        this.addAssignmentProperty(al[106], 0, b7.String);
        this.addAssignmentProperty(al[125], 0, b7.Float)
    },addTaskProperty:function(b7, b9, ca) {
        b9 = b9 ? b9 : b7;
        var cb = {proName:b7,tagName:b9,type:ca};
        this.taskReader[b9] = cb;
        this.taskWriter[b7] = cb;
        if (b9.indexOf("/") > 0) {
            var b8 = b9.split("/")[0];
            if (!this.taskReader[b8]) {
                this.taskReader[b8] = []
            }
            this.taskReader[b8].push(cb)
        }
    },addResourceProperty:function(b7, b8, b9) {
        b8 = b8 ? b8 : b7;
        var ca = {proName:b7,tagName:b8,type:b9};
        this.resourceReader[b8] = ca;
        this.resourceWriter[b7] = ca
    },addLinkProperty:function(b7, b8, b9) {
        b8 = b8 ? b8 : b7;
        var ca = {proName:b7,tagName:b8,type:b9};
        this.linkReader[b8] = ca;
        this.linkWriter[b7] = ca
    },addAssignmentProperty:function(b7, b8, b9) {
        b8 = b8 ? b8 : b7;
        var ca = {proName:b7,tagName:b8,type:b9};
        this.assignmentReader[b8] = ca;
        this.assignmentWriter[b7] = ca
    },addExtendedAttributes:function(b7) {
        if (!this.extendedAttributes) {
            this.extendedAttributes = {}
        }
        var ca,b9;
        for (var b8 = b7.firstChild; b8; b8 = b8.nextSibling) {
            switch (b8.nodeName) {case al[105]:case"FieldName":b9 = bC(b8);break
            }
        }
        this.extendedAttributes[ca] = {FieldID:ca,FieldName:b9}
    },readTask:function(b9) {
        if (!b9) {
            return null
        }
        var b8 = new p();
        b8.node = b9;
        var ca = this.taskReader;
        for (var b7 = b9.firstChild; b7; b7 = b7.nextSibling) {
            switch (b7.nodeName) {case al[104]:for (var cd = b7.firstChild; cd; cd = cd.nextSibling) {
                var cc,cb;
                switch (cd.nodeName) {case al[105]:cc = bC(cd);break;case"Value":cb = bC(cd);break
                }
            }b8[cc] = cb;break;default:var cf = ca[b7.nodeName];if (cf) {
                if (cf.length) {
                    for (var cd = b7.firstChild; cd; cd = cd.nextSibling) {
                        if (cd.nodeName.indexOf("#") == 0) {
                            continue
                        }
                        var ce = ca[b7.nodeName + "/" + cd.nodeName];
                        if (ce) {
                            b8[ce.proName] = bh.apply(ce.type, [cd])
                        }
                    }
                } else {
                    b8[cf.proName] = bh.apply(cf.type, [b7])
                }
            }break
            }
        }
        this.taskCount++;
        if (b8.OutlineNumber) {
            if (!b8.OutlineLevel) {
                b8.OutlineLevel = b8.OutlineNumber == "0" ? 0 : b8.OutlineNumber.split(".").length
            }
            b8.OriginalLevel = b8.OutlineLevel
        }
        return b8
    },readResource:function(b8) {
        if (!b8) {
            return null
        }
        var ca = new X();
        ca.node = b8;
        var b7 = this.resourceReader;
        for (var cb = b8.firstChild; cb; cb = cb.nextSibling) {
            var b9 = b7[cb.nodeName];
            if (b9) {
                ca[b9.proName] = bh.apply(b9.type, [cb])
            }
        }
        if (ca.OutlineNumber) {
            if (!ca.OutlineLevel) {
                ca.OutlineLevel = ca.OutlineNumber == "0" ? 0 : ca.OutlineNumber.split(".").length
            }
            ca.OriginalLevel = ca.OutlineLevel
        }
        return ca
    },readLink:function(b9) {
        if (!b9) {
            return null
        }
        var b8 = new aX();
        b8.node = b9;
        var b7 = this.linkReader;
        for (var cb = b9.firstChild; cb; cb = cb.nextSibling) {
            var ca = b7[cb.nodeName];
            if (ca) {
                b8[ca.proName] = bh.apply(ca.type, [cb])
            }
        }
        return b8
    },readAssignment:function(b8) {
        if (!b8) {
            return null
        }
        var ca = new b();
        ca.node = b8;
        var b7 = this.assignmentReader;
        for (var cb = b8.firstChild; cb; cb = cb.nextSibling) {
            var b9 = b7[cb.nodeName];
            if (b9) {
                ca[b9.proName] = bh.apply(b9.type, [cb])
            }
        }
        return ca
    },readTaskLink:function(b7, b9) {
        if (!b9) {
            return null
        }
        var b8 = this.readLink(b9);
        b8[b9.nodeName == al[103] ? al[102] : al[101]] = b7;
        return b8
    },readTaskAssignment:function(b7, b8) {
        if (!b8) {
            return null
        }
        var b9 = this.readAssignment(b8);
        b9.task = b7;
        return b9
    },readResourceAssignment:function(b8, b7) {
        if (!b7) {
            return null
        }
        var b9 = this.readAssignment(b7);
        b9.resource = b8;
        return b9
    },updateItem:function(ca, ci, cc, ce) {
        var cf = ca[cc];
        if (cf) {
            var b9 = bD(ci.node, cf.tagName);
            if (!b9) {
                var cd = cf.tagName.split("/"),cg = ci.node;
                for (var cb = 0; cb < cd.length; cb++) {
                    if (!cd[cb]) {
                        continue
                    }
                    b9 = bD(cg, cd[cb]);
                    if (!b9) {
                        b9 = cg.ownerDocument.createElement(cd[cb]);
                        cg.appendChild(b9)
                    }
                    cg = b9
                }
            }
            bg.apply(cf.type, [b9,ce])
        }
        if (!ca[cc] && this.extendedAttributes && this.extendedAttributes[cc]) {
            for (var b8 = ci.node.firstChild; b8; b8 = b8.nextSibling) {
                if (b8.nodeName != al[104]) {
                    continue
                }
                var b7 = bD(b8, al[105]);
                if (!b7 || bC(b7) != cc) {
                    continue
                }
                var ch = bD(b8, "Value");
                if (!ch) {
                    ch = b8.ownerDocument.createElement("Value");
                    b8.appendChild(ch)
                }
                bg.apply(aA.types.String, [ch,ce]);
                return
            }
            var b8 = ci.node.ownerDocument.createElement(al[104]);
            var b7 = b8.ownerDocument.createElement(al[105]);
            bg.apply(aA.types.String, [b7,cc]);
            b8.appendChild(b7);
            var ch = b8.ownerDocument.createElement("Value");
            bg.apply(aA.types.String, [ch,ce]);
            b8.appendChild(ch)
        }
    },updateTask:function(b8, b7, b9) {
        if (!this.saveChange) {
            return
        }
        this.updateItem(this.taskWriter, b8, b7, b9)
    },updateLink:function(b8, b7, b9) {
        if (!this.saveChange) {
            return
        }
        this.updateItem(this.linkWriter, b8, b7, b9)
    },updateResource:function(b9, b7, b8) {
        if (!this.saveChange) {
            return
        }
        this.updateItem(this.resourceWriter, b9, b7, b8)
    },updateAssignment:function(b9, b7, b8) {
        if (!this.saveChange) {
            return
        }
        this.updateItem(this.assignmentWriter, b9, b7, b8)
    }});
    function bX(b8, b7) {
        ai(this, {taskReader:{},taskWriter:{},resourceReader:{},resourceWriter:{},linkReader:{},linkWriter:{},assignmentReader:{},assignmentWriter:{}});
        var b9 = (typeof(b8) == al[154]) ? this.loadUrl(b8) : b8;
        b7 = b7 ? b7 : new aq();
        br(this, b7.getConfigObj("SFDataXml"));
        ai(this, {doc:b9,config:b7});
        this.addDefaultProperty()
    }

    bX.prototype = new bt();
    ai(bX.prototype, {initialize:function() {
        bt.prototype.initialize.apply(this, arguments)
    },loadUrl:function(b7) {
        var b9;

        function b8(ca) {
            b9 = ca
        }

        bF(b7, b8, false);
        return b9
    },getCalendar:function() {
        var b7;
        var b8 = bD(this.doc.documentElement, al[99]);
        if (b8) {
            b7 = bC(b8);
            var b9 = bD(this.doc.documentElement, "Calendars");
            for (var ca = b9.firstChild; ca; ca = ca.nextSibling) {
                if (ca.nodeName != "Calendar") {
                    continue
                }
                if (bC(bD(ca, "UID")) == b7) {
                    return this.readCalendar(ca)
                }
            }
        }
        return bl(al[153])
    },readRootTask:function() {
        var b8 = bD(this.doc.documentElement, al[148]);
        if (!b8) {
            var b7 = this.addTask();
            return b7
        }
        return this.readTask(b8)
    },readTaskFirstChild:function(b7) {
        if (!b7.node) {
            return null
        }
        if (b7.node.getAttribute(al[98])) {
            var ca = this.loadUrl(b7.node.getAttribute(al[98]));
            b7.node.removeAttribute(al[98]);
            var b9 = bD(b7.node, al[97]);
            if (!b9) {
                b9 = b7.node.ownerDocument.createElement(al[97]);
                b7.node.appendChild(b9)
            }
            while (ca.documentElement.firstChild) {
                var b8 = ca.documentElement.firstChild;
                ca.documentElement.removeChild(b8);
                b9.appendChild(b8)
            }
        }
        return this.readTask(bD(b7.node, "Tasks/Task"))
    },readTaskNextSibling:function(b7) {
        if (!b7.node) {
            return null
        }
        if (b7.node.getAttribute(al[96])) {
            var ca = this.loadUrl(b7.node.getAttribute(al[96]));
            b7.node.removeAttribute(al[96]);
            var b9 = bD(b7.getParentTask().node, al[97]);
            while (ca.documentElement.firstChild) {
                var b8 = ca.documentElement.firstChild;
                ca.documentElement.removeChild(b8);
                b9.appendChild(b8)
            }
        }
        return this.readTask(bz(b7.node.nextSibling, al[148]))
    },readRootResource:function() {
        var b7 = bD(this.doc.documentElement, al[147]);
        if (!b7) {
            var b8 = this.addResource();
            return b8
        }
        return this.readResource(b7)
    },readResourceFirstChild:function(b8) {
        if (!b8.node) {
            return null
        }
        if (b8.node.getAttribute(al[98])) {
            var b9 = this.loadUrl(b8.node.getAttribute(al[98]));
            b8.node.removeAttribute(al[98]);
            var ca = bD(b8.node, al[95]);
            if (!ca) {
                ca = b8.node.ownerDocument.createElement(al[95]);
                b8.node.appendChild(ca)
            }
            while (b9.documentElement.firstChild) {
                var b7 = b9.documentElement.firstChild;
                b9.documentElement.removeChild(b7);
                ca.appendChild(b7)
            }
        }
        return this.readResource(bD(b8.node, "Resources/Resource"))
    },readResourceNextSibling:function(b8) {
        if (!b8.node) {
            return null
        }
        if (b8.node.getAttribute(al[96])) {
            var b9 = this.loadUrl(b8.node.getAttribute(al[96]));
            b8.node.removeAttribute(al[96]);
            var ca = bD(b8.getParentResource().node, al[95]);
            while (b9.documentElement.firstChild) {
                var b7 = b9.documentElement.firstChild;
                b9.documentElement.removeChild(b7);
                ca.appendChild(b7)
            }
        }
        return this.readResource(bz(b8.node.nextSibling, al[147]))
    },readTaskFirstLink:function(b7) {
        var b9,b8 = b7.node;
        if (!b8) {
            return null
        }
        for (b9 = b8.firstChild; b9; b9 = b9.nextSibling) {
            if (b9.nodeName == al[103] || b9.nodeName == al[94]) {
                break
            }
        }
        if (b9 == null) {
            b9 = bD(b8, "Links/*")
        }
        return this.readTaskLink(b7, b9)
    },readTaskNextLink:function(b8, ca) {
        var b9,b7 = ca.node;
        if (!b7) {
            return null
        }
        for (b9 = b7.nextSibling; b9; b9 = b9.nextSibling) {
            if (b9.nodeName == al[103] || b9.nodeName == al[94]) {
                break
            }
        }
        if (!b9 && b7.parentNode.nodeName != "Links") {
            b9 = bD(b7, al[93])
        }
        return this.readTaskLink(b8, b9)
    },readTaskFirstAssignment:function(b7) {
        if (!b7.node) {
            return null
        }
        return this.readTaskAssignment(b7, bD(b7.node, al[92]))
    },readTaskNextAssignment:function(b7, b8) {
        if (!b8.node) {
            return null
        }
        return this.readTaskAssignment(b7, bz(b8.node.nextSibling, al[145]))
    },readResourceFirstAssignment:function(b7) {
        if (!b7.node) {
            return null
        }
        return this.readTaskAssignment(b7, bD(b7.node, al[92]))
    },readResourceNextAssignment:function(b7, b8) {
        if (!b8.node) {
            return null
        }
        return this.readTaskAssignment(b7, bz(b8.node.nextSibling, al[145]))
    },insertNode:function(cb, b9, ca, b8) {
        if (b9) {
            var b7 = bD(b9.node, b8);
            if (!b7) {
                b7 = b9.node.ownerDocument.createElement(b8);
                b9.node.appendChild(b7)
            }
            if (ca) {
                if (ca.node.nextSibling) {
                    b7.insertBefore(cb, ca.node.nextSibling)
                } else {
                    b7.appendChild(cb)
                }
            } else {
                b7.insertBefore(cb, b7.firstChild)
            }
        } else {
            this.doc.documentElement.appendChild(cb)
        }
    },addTask:function(b9, b7) {
        var b8 = new p();
        if (this.saveChange) {
            var ca = b9.node.ownerDocument.createElement(al[148]);
            this.insertNode(ca, b9, b7, al[97]);
            b8.node = ca
        }
        return b8
    },deleteTask:function(b7) {
        if (!this.saveChange) {
            return
        }
        b7.node.parentNode.removeChild(b7.node)
    },moveTask:function(b8, b9, b7) {
        if (!this.saveChange) {
            return
        }
        b8.node.parentNode.removeChild(b8.node);
        this.insertNode(b8.node, b9, b7, al[97])
    },addResource:function(b7, ca) {
        var b9 = new X();
        if (this.saveChange) {
            var b8 = b7.node.ownerDocument.createElement(al[147]);
            this.insertNode(b8, b7, ca, al[95]);
            b9.node = b8
        }
        return b9
    },deleteResource:function(b7) {
        if (!this.saveChange) {
            return
        }
        b7.node.parentNode.removeChild(b7.node)
    },moveResource:function(b8, b7, b9) {
        if (!this.saveChange) {
            return
        }
        b8.node.parentNode.removeChild(b8.node);
        this.insertNode(b8.node, b7, b9, al[95])
    },addLink:function(ce, cb, b8) {
        var ca = new aX();
        if (this.saveChange) {
            var cc = ce.node.ownerDocument;
            var b9 = cc.createElement(al[103]);
            var cd = cc.createElement(al[109]);
            bB(cd, cb.UID);
            b9.appendChild(cd);
            var cd = cc.createElement(al[126]);
            bB(cd, b8);
            b9.appendChild(cd);
            ca.node = b9;
            ca.setProperty(al[126], b8);
            var b7 = ce.node.selectSingleNode("Links");
            if (!b7) {
                b7 = ce.node.ownerDocument.createElement("Links");
                ce.node.appendChild(b7)
            }
            b7.appendChild(b9)
        }
        return ca
    },deleteLink:function(b7) {
        if (!this.saveChange) {
            return
        }
        b7.node.parentNode.removeChild(b7.node)
    },addAssignment:function(b9, cb, b8) {
        var cd = new b();
        if (this.saveChange) {
            var cc = this.doc;
            var ca = cc.createElement(al[145]);
            var ce = cc.createElement(al[107]);
            bB(ce, b9.UID);
            ca.appendChild(ce);
            var ce = cc.createElement(al[106]);
            bB(ce, cb.UID);
            ca.appendChild(ce);
            var ce = cc.createElement(al[125]);
            bB(ce, b8);
            ca.appendChild(ce);
            cd.node = ca;
            var b7 = b9.node.selectSingleNode(al[91]);
            if (!b7) {
                b7 = b9.node.ownerDocument.createElement(al[91]);
                b9.node.appendChild(b7)
            }
            b7.appendChild(ca)
        }
        return cd
    },deleteAssignment:function(b7) {
        if (!this.saveChange) {
            return
        }
        b7.node.parentNode.removeChild(b7.node)
    }});
    function ak(b8, b7) {
        ai(this, {taskReader:{},taskWriter:{},resourceReader:{},resourceWriter:{},linkReader:{},linkWriter:{},assignmentReader:{},assignmentWriter:{}});
        b7 = b7 ? b7 : new aq();
        br(this, b7.getConfigObj("SFDataProject"));
        ai(this, {doc:b8,config:b7});
        this.addDefaultProperty()
    }

    ak.prototype = new bt();
    ai(ak.prototype, {initialize:function() {
        bt.prototype.initialize.apply(this, arguments)
    },loadXml:function(b8) {
        if (b8) {
            this.doc = b8
        }
        b8 = this.doc;
        if (!b8) {
            this.doc = b8 = bE()
        }
        if (!b8.documentElement) {
            b8.appendChild(b8.createElement("Project"))
        }
        var b7 = this.doc.documentElement,b9 = b7.firstChild;
        while (b9) {
            switch (b9.nodeName) {case al[97]:this.tasksNode = b9;break;case al[95]:this.resourcesNode = b9;break;case al[91]:this.assignmentsNode = b9;break;case"ExtendedAttributes":this.addExtendedAttributes(b9);break
            }
            b9 = b9.nextSibling
        }
        this.loaded = true
    },getCalendar:function() {
        var b7;
        var b8 = bD(this.doc.documentElement, al[99]);
        if (b8) {
            b7 = bC(b8);
            var b9 = bD(this.doc.documentElement, "Calendars");
            for (var ca = b9.firstChild; ca; ca = ca.nextSibling) {
                if (ca.nodeName != "Calendar") {
                    continue
                }
                if (bC(bD(ca, "UID")) == b7) {
                    return this.readCalendar(ca)
                }
            }
        }
        return bl(al[153])
    },getTasksNode:function() {
        if (!this.loaded) {
            this.loadXml()
        }
        if (!this.tasksNode) {
            this.tasksNode = this.doc.createElement(al[97]);
            this.doc.documentElement.appendChild(this.tasksNode)
        }
        return this.tasksNode
    },getResourcesNode:function() {
        if (!this.loaded) {
            this.loadXml()
        }
        if (!this.resourcesNode) {
            this.resourcesNode = this.doc.createElement(al[95]);
            this.doc.documentElement.appendChild(this.resourcesNode)
        }
        return this.resourcesNode
    },getAssignmentsNode:function() {
        if (!this.loaded) {
            this.loadXml()
        }
        if (!this.assignmentsNode) {
            this.assignmentsNode = this.doc.createElement(al[91]);
            this.doc.documentElement.appendChild(this.assignmentsNode)
        }
        return this.assignmentsNode
    },readRootTask:function() {
        var b8 = bz(this.getTasksNode().firstChild, al[148]);
        if (!b8) {
            var b7 = this.addTask();
            return b7
        }
        return this.readTask(b8)
    },readTaskFirstChild:function(b7) {
        if (!b7.node) {
            return null
        }
        var b9 = b7.OriginalLevel;
        var b8 = bz(b7.node.nextSibling, al[148]);
        if (b8) {
            var ca = bD(b8, al[123]) ? bC(bD(b8, al[123])) : bC(bD(b8, al[124])).split(".").length;
            if (ca > b9) {
                return this.readTask(b8)
            }
        }
        return null
    },readTaskNextSibling:function(b7) {
        if (!b7.node) {
            return null
        }
        var b9 = b7.OriginalLevel;
        for (var b8 = b7.node.nextSibling; b8; b8 = b8.nextSibling) {
            if (b8.nodeName != al[148]) {
                continue
            }
            var ca = bD(b8, al[123]) ? bC(bD(b8, al[123])) : bC(bD(b8, al[124])).split(".").length;
            if (ca > b9) {
                continue
            }
            if (ca == b9) {
                return this.readTask(b8)
            }
            break
        }
        return null
    },readRootResource:function() {
        var b7 = this.getResourcesNode().firstChild;
        if (!b7) {
            var b8 = this.addResource("0");
            return b8
        }
        return this.readResource(b7)
    },readResourceFirstChild:function(b7) {
        if (!b7.node) {
            return null
        }
        if (b7.node != bz(this.getResourcesNode().firstChild, al[147])) {
            return null
        }
        return this.readResource(bz(b7.node.nextSibling, al[147]))
    },readResourceNextSibling:function(b7) {
        if (!b7.node) {
            return null
        }
        if (b7.node == bz(this.getResourcesNode().firstChild, al[147])) {
            return null
        }
        return this.readResource(bz(b7.node.nextSibling, al[147]))
    },readTaskFirstLink:function(b7) {
        var b9,b8 = b7.node;
        if (!b8) {
            return null
        }
        for (b9 = b8.firstChild; b9; b9 = b9.nextSibling) {
            if (b9.nodeName == al[103] || b9.nodeName == al[94]) {
                break
            }
        }
        if (b9 == null) {
            b9 = bD(b8, "Links/*")
        }
        return this.readTaskLink(b7, b9)
    },readTaskNextLink:function(b8, ca) {
        var b9,b7 = ca.node;
        if (!b7) {
            return null
        }
        for (b9 = b7.nextSibling; b9; b9 = b9.nextSibling) {
            if (b9.nodeName == al[103] || b9.nodeName == al[94]) {
                break
            }
        }
        if (!b9 && b7.parentNode.nodeName != "Links") {
            b9 = bD(b7, al[93])
        }
        return this.readTaskLink(b8, b9)
    },readTaskFirstAssignment:function(b7) {
        var b8 = b7.UID;
        for (var b9 = this.getAssignmentsNode().firstChild; b9; b9 = b9.nextSibling) {
            if (b9.nodeName != al[145]) {
                continue
            }
            if (bC(bD(b9, al[107])) == b8) {
                return this.readTaskAssignment(b7, b9)
            }
        }
        return null
    },readTaskNextAssignment:function(b7, ca) {
        if (!ca.node) {
            return null
        }
        var b8 = b7.UID;
        for (var b9 = ca.node.nextSibling; b9; b9 = b9.nextSibling) {
            if (b9.nodeName != al[145]) {
                continue
            }
            if (bC(bD(b9, al[107])) == b8) {
                return this.readTaskAssignment(b7, b9)
            }
        }
        return null
    },readResourceFirstAssignment:function(b9) {
        var b7 = b9.UID;
        for (var b8 = this.getAssignmentsNode().firstChild; b8; b8 = b8.nextSibling) {
            if (b8.nodeName != al[145]) {
                continue
            }
            if (bC(bD(b8, al[106])) == b7) {
                return this.readResourceAssignment(b9, b8)
            }
        }
        return null
    },readResourceNextAssignment:function(b9, ca) {
        if (!ca.node) {
            return null
        }
        var b7 = b9.UID;
        for (var b8 = ca.node.nextSibling; b8; b8 = b8.nextSibling) {
            if (b8.nodeName != al[145]) {
                continue
            }
            if (bC(bD(b8, al[106])) == b7) {
                return this.readResourceAssignment(b9, b8)
            }
        }
        return null
    },addTask:function(ca, b7) {
        var b8 = new p();
        if (this.saveChange) {
            var cc = this.getTasksNode();
            var cb = cc.ownerDocument.createElement(al[148]);
            if (ca) {
                var b9 = b7 ? b7.node : ca.node;
                if (b9.nextSibling) {
                    cc.insertBefore(cb, b9.nextSibling)
                } else {
                    cc.appendChild(cb)
                }
            } else {
                cc.insertBefore(cb, cc.firstChild)
            }
            b8.node = cb
        }
        return b8
    },deleteTask:function(b7) {
        if (!this.saveChange) {
            return
        }
        b7.node.parentNode.removeChild(b7.node)
    },addLink:function(cd, ca, b7) {
        var b9 = new aX();
        if (this.saveChange) {
            var cb = cd.node.ownerDocument;
            var b8 = cb.createElement(al[103]);
            var cc = cb.createElement(al[109]);
            bB(cc, ca.UID);
            b8.appendChild(cc);
            b9.node = b8;
            if (b7) {
                var cc = cb.createElement(al[126]);
                bB(cc, b7);
                b8.appendChild(cc);
                b9.setProperty(al[126], b7)
            }
            cd.node.appendChild(b8)
        }
        return b9
    },deleteLink:function(b7) {
        if (!this.saveChange) {
            return
        }
        b7.node.parentNode.removeChild(b7.node)
    },addResource:function(b8, cc) {
        var ca = new X();
        if (this.saveChange) {
            var cb = this.getResourcesNode();
            var b9 = cb.ownerDocument.createElement(al[147]);
            var b7 = cc ? cc.node : b8.node;
            if (b7.nextSibling) {
                cb.insertBefore(b9, b7.nextSibling)
            } else {
                cb.appendChild(b9)
            }
            ca.node = b9
        }
        return ca
    },deleteResource:function(b7) {
        if (!this.saveChange) {
            return
        }
        b7.node.parentNode.removeChild(b7.node)
    },addAssignment:function(b8, ca, b7) {
        var cc = new b();
        if (this.saveChange) {
            var cb = this.doc;
            var b9 = cb.createElement(al[145]);
            var cd = cb.createElement(al[107]);
            bB(cd, b8.UID);
            b9.appendChild(cd);
            var cd = cb.createElement(al[106]);
            bB(cd, ca.UID);
            b9.appendChild(cd);
            if (b7) {
                var cd = cb.createElement(al[125]);
                bB(cd, b7);
                b9.appendChild(cd);
                cc.setProperty(al[125], b7)
            }
            cc.node = b9;
            this.getAssignmentsNode().appendChild(b9)
        }
        return cc
    },deleteAssignment:function(b7) {
        if (!this.saveChange) {
            return
        }
        b7.node.parentNode.removeChild(b7.node)
    }});
    function Y() {
    }

    ai(Y.prototype, {initialize:function() {
    },remove:function() {
    },depose:function() {
        this.remove()
    }});
    function af() {
    }

    af.prototype = new Y();
    ai(af.prototype, {initialize:function(b7) {
        if (b7.autoCalculateTime) {
            this.listeners = [i(b7, al[90], this, this.onTaskChange),i(b7, al[89], this, this.onTaskDelete),i(b7, al[88], this, this.onTaskMove)]
        }
    },onTaskChange:function(b7, b8, b9) {
        if (b8 != al[127] && b8 != al[128]) {
            return
        }
        if (b7.getParentTask()) {
            b7.getParentTask().checkTime()
        }
    },onTaskDelete:function(b8, b7) {
        if (b7) {
            b7.checkTime()
        }
    },onTaskMove:function(b8, b7) {
        if (b7) {
            b7.checkTime()
        }
        if (b8.getParentTask()) {
            b8.getParentTask().checkTime()
        }
    }});
    function g() {
    }

    g.prototype = new Y();
    ai(g.prototype, {initialize:function(ca) {
        this.listeners = [];
        var b7 = ca.getModules();
        for (var b9 = b7.length - 1; b9 >= 0; b9--) {
            if (!ca[al[135] + b7[b9]]) {
                continue
            }
            var b8 = b7[b9].toLowerCase();
            this.listeners = this.listeners.concat([i(ca, b8 + al[139], this, this.onElementRegister),i(ca, al[131] + b8 + "add", this, this.onElementAdd),i(ca, al[131] + b8 + al[136], this, this.onElementDelete),i(ca, al[131] + b8 + al[132], this, this.onElementMove)])
        }
    },setOutline:function(b8, b7) {
        var b9 = b8.getParent(),ca = "0",cd = 0;
        if (b9) {
            ca = (b9.OutlineLevel == 0) ? "" + b8.getSiblingIndex() : b9.OutlineNumber + "." + b8.getSiblingIndex();
            cd = b9.OutlineLevel + 1
        }
        var cb = (ca != b8[al[124]]);
        b8.setProperty(al[124], ca);
        b8.setProperty(al[123], cd);
        if (b7 && cb && b8.Summary) {
            for (var cc = b8.getFirstChild(); cc; cc = cc.getNextSibling()) {
                this.setOutline(cc, true)
            }
        }
    },onElementRegister:function(b7) {
        this.setOutline(b7, false)
    },onElementAdd:function(b8) {
        for (var b7 = b8; b7; b7 = b7.getNextSibling()) {
            this.setOutline(b7, true)
        }
    },onElementDelete:function(b8, b9, ca) {
        if (!b9) {
            return
        }
        for (var b7 = ca ? ca.getNextSibling() : b9.getFirstChild(); b7; b7 = b7.getNextSibling()) {
            this.setOutline(b7, true)
        }
    },onElementMove:function(b9, b7, ca) {
        if (b7) {
            for (var b8 = ca ? ca.getNextSibling() : b7.getFirstChild(); b8; b8 = b8.getNextSibling()) {
                this.setOutline(b8, true)
            }
        }
        for (var b8 = b9; b8; b8 = b8.getNextSibling()) {
            this.setOutline(b8, true)
        }
    }});
    function b4() {
    }

    b4.prototype = new Y();
    ai(b4.prototype, {initialize:function(ca) {
        this.listeners = [];
        var b7 = ca.getModules();
        for (var b9 = b7.length - 1;
             b9 >= 0; b9--) {
            if (!ca[al[135] + b7[b9]]) {
                continue
            }
            var b8 = b7[b9].toLowerCase();
            this.listeners = this.listeners.concat([i(ca, b8 + al[139], this, this.onElementRegister),i(ca, al[131] + b8 + "add", this, this.onElementAdd),i(ca, al[131] + b8 + al[136], this, this.onElementDelete),i(ca, al[131] + b8 + al[132], this, this.onElementMove)])
        }
    },setID:function(b7) {
        var b8 = b7.getParent() ? b7.getPrevious().ID + 1 : 0;
        if (b8 != b7.ID) {
            b7.setProperty("ID", b8);
            return true
        }
        return false
    },onElementRegister:function(b7) {
        this.setID(b7)
    },onElementAdd:function(b8) {
        for (var b7 = b8.getNext();
             b7; b7 = b7.getNext()) {
            if (!this.setID(b7)) {
                break
            }
        }
    },onElementDelete:function(b8, b9, ca) {
        if (!b9) {
            return
        }
        for (var b7 = ca ? ca.getNext() : b9.getNext(); b7; b7 = b7.getNext()) {
            if (!this.setID(b7)) {
                break
            }
        }
    },onElementMove:function(b9, b7, ca) {
        var cc,cb = [b9];
        if (b7) {
            cb.push(ca ? ca.getNext() : b7.getNext())
        }
        cb.sort(function(ce, cd) {
            if (!ce || !cd) {
                return 0
            }
            return ce.data.compareElement(ce, cd)
        });
        while (cb.length > 0) {
            for (var b8 = cb.pop(); b8; b8 = b8.getNext()) {
                if (!this.setID(b8)) {
                    break
                }
            }
        }
    }});
    function bo() {
    }

    bo.prototype = new Y();
    ai(bo.prototype, {initialize:function(ca) {
        this.listeners = [];
        var b7 = ca.getModules();
        this.ignoreFields = {};
        for (var b9 = b7.length - 1; b9 >= 0; b9--) {
            var b8 = b7[b9].toLowerCase();
            var cb = ca[b8 + "ReadonlyIgnoreProperty"];
            this.ignoreFields[b8] = cb ? cb.split(",") : [];
            this.listeners = this.listeners.concat([i(ca, al[137] + b8 + al[129], this, this.onElementChange),i(ca, al[137] + b8 + al[136], this, this.onElementAction),i(ca, al[137] + b8 + al[132], this, this.onElementAction)])
        }
    },onElementChange:function(b9, b8, b7) {
        if (z(this.ignoreFields[b8.elementType.toLowerCase()], b7)) {
            return
        }
        if (b8[al[122]]) {
            b9.returnValue = false
        }
    },onElementAction:function(b8, b7) {
        if (b7[al[122]]) {
            b8.returnValue = false
        }
    }});
    function Z(b7) {
        this.setTaskFields("Name,Start,Finish,Summary,PercentComplete,Notes");
        this.setLinkFields(al[126]);
        this.clear();
        if (b7) {
            b7.addComponent(this)
        }
    }

    Z.prototype = new Y();
    ai(Z.prototype, {initialize:function(b7) {
        this.start(b7)
    },start:function(b7) {
        this.stop();
        this.listeners = [i(b7, al[87], this, this.onTaskAdd),i(b7, al[89], this, this.onTaskDelete),i(b7, al[88], this, this.onTaskMove),i(b7, al[90], this, this.onTaskChange),i(b7, al[143], this, this.onLinkAdd),i(b7, "afterlinkdelete", this, this.onLinkDelete),i(b7, al[86], this, this.onLinkChange)]
    },clear:function() {
        ai(this, {newTasks:[],updateTasks:[],moveTasks:[],deleteTasks:[],newLinks:[],updateLinks:[],deleteLinks:[]})
    },getXml:function() {
        var cd = bE();
        var b7 = cd.createElement("Log");
        cd.appendChild(b7);
        var cc = this.newTasks;
        if (cc && cc.length > 0) {
            var b8 = this.addNode(b7, "AddTasks");
            for (var cb = 0; cb < cc.length; cb++) {
                var ca = cc[cb];
                if (!ca.task.data) {
                    continue
                }
                var b9 = this.addNode(b8, al[148]);
                this.addPropertyNode(b9, ca.task, ["UID"]);
                this.addPropertyNode(b9, ca.task, ca.fields);
                if (ca.task.getParentTask()) {
                    this.addNode(b9, "ParentUID", ca.task.getParentTask().UID)
                }
                if (ca.task.getPreviousSibling()) {
                    this.addNode(b9, al[85], ca.task.getPreviousSibling().UID)
                }
            }
        }
        var cc = this.updateTasks;
        if (cc && cc.length > 0) {
            var b8 = this.addNode(b7, "UpdateTasks");
            for (var cb = 0; cb < cc.length; cb++) {
                var ca = cc[cb];
                if (!ca.task.data) {
                    continue
                }
                var b9 = this.addNode(b8, al[148]);
                this.addPropertyNode(b9, ca.task, ["UID"]);
                this.addPropertyNode(b9, ca.task, ca.fields)
            }
        }
        var cc = this.moveTasks;
        if (cc && cc.length > 0) {
            var b8 = this.addNode(b7, "MoveTasks");
            for (var cb = 0; cb < cc.length; cb++) {
                var ca = cc[cb];
                if (!ca.task.data) {
                    continue
                }
                var b9 = this.addNode(b8, al[148]);
                this.addPropertyNode(b9, ca.task, ["UID"]);
                if (ca.task.getParentTask()) {
                    this.addNode(b9, "ParentUID", ca.task.getParentTask().UID)
                }
                if (ca.task.getPreviousSibling()) {
                    this.addNode(b9, al[85], ca.task.getPreviousSibling().UID)
                }
            }
        }
        var cc = this.deleteTasks;
        if (cc && cc.length > 0) {
            var b8 = this.addNode(b7, "DeleteTasks");
            for (var cb = 0; cb < cc.length; cb++) {
                var ca = cc[cb];
                var b9 = this.addNode(b8, al[148]);
                this.addPropertyNode(b9, ca.task, ["UID"])
            }
        }
        var cc = this.newLinks;
        if (cc && cc.length > 0) {
            var b8 = this.addNode(b7, "AddLinks");
            for (var cb = 0; cb < cc.length; cb++) {
                var ca = cc[cb];
                if (!ca.link.data) {
                    continue
                }
                var b9 = this.addNode(b8, al[146]);
                this.addPropertyNode(b9, ca.link, ["UID"]);
                this.addPropertyNode(b9, ca.link, ca.fields);
                if (ca.link.getPredecessorTask()) {
                    this.addNode(b9, al[109], ca.link.getPredecessorTask().UID)
                }
                if (ca.link.getSuccessorTask()) {
                    this.addNode(b9, al[108], ca.link.getSuccessorTask().UID)
                }
            }
        }
        var cc = this.updateLinks;
        if (cc && cc.length > 0) {
            var b8 = this.addNode(b7, "UpdateLinks");
            for (var cb = 0; cb < cc.length; cb++) {
                var ca = cc[cb];
                if (!ca.link.data) {
                    continue
                }
                var b9 = this.addNode(b8, al[146]);
                this.addPropertyNode(b9, ca.link, ["UID"]);
                if (ca.link.getPredecessorTask()) {
                    this.addNode(b9, al[109], ca.link.getPredecessorTask().UID)
                }
                if (ca.link.getSuccessorTask()) {
                    this.addNode(b9, al[108], ca.link.getSuccessorTask().UID)
                }
                this.addPropertyNode(b9, ca.link, ca.fields)
            }
        }
        var cc = this.deleteLinks;
        if (cc && cc.length > 0) {
            var b8 = this.addNode(b7, "DeleteLinks");
            for (var cb = 0; cb < cc.length; cb++) {
                var ca = cc[cb];
                var b9 = this.addNode(b8, al[146]);
                this.addPropertyNode(b9, ca.link, ["UID"])
            }
        }
        return cd
    },setTaskFields:function(b7) {
        this.taskFields = typeof(b7) == al[154] ? b7.split(",") : b7
    },onTaskAdd:function(b8) {
        var b9 = z(this.deleteTasks, b8, function(cb, ca) {
            return cb.task == ca
        });
        if (b9) {
            y(this.deleteTasks, b9);
            return
        }
        b9 = z(this.moveTasks, b8, function(cb, ca) {
            return cb.task == ca
        });
        if (b9) {
            y(this.moveTasks, b9)
        }
        var b7 = [];
        b9 = z(this.updateTasks, b8, function(cb, ca) {
            return cb.task == ca
        });
        if (b9) {
            y(this.updateTasks, b9);
            b7 = b9.fields
        }
        this.newTasks.push({task:b8,fields:b7})
    },onTaskDelete:function(b7) {
        var b8 = z(this.newTasks, b7, function(ca, b9) {
            return ca.task == b9
        });
        if (b8) {
            y(this.newTasks, b8);
            return
        }
        b8 = z(this.moveTasks, b7, function(ca, b9) {
            return ca.task == b9
        });
        if (b8) {
            y(this.moveTasks, b8)
        }
        b8 = z(this.updateTasks, b7, function(ca, b9) {
            return ca.task == b9
        });
        if (b8) {
            y(this.updateTasks, b8)
        }
        this.deleteTasks.push({task:b7})
    },onTaskMove:function(b8, b7, b9) {
        if (z(this.deleteTasks, b8, function(cb, ca) {
            return cb.task == ca
        })) {
            return
        }
        if (z(this.newTasks, b8, function(cb, ca) {
            return cb.task == ca
        })) {
            return
        }
        if (z(this.moveTasks, b8, function(cb, ca) {
            return cb.task == ca
        })) {
            return
        }
        this.moveTasks.push({task:b8})
    },onTaskChange:function(b7, b8, b9) {
        if (z(this.deleteTasks, b7, function(cc, cb) {
            return cc.task == cb
        })) {
            return
        }
        if (!z(this.taskFields, b8)) {
            return
        }
        var ca = z(this.newTasks, b7, function(cc, cb) {
            return cc.task == cb
        });
        if (!ca) {
            ca = z(this.updateTasks, b7, function(cc, cb) {
                return cc.task == cb
            })
        }
        if (!ca) {
            this.updateTasks.push(ca = {task:b7,fields:[]})
        }
        if (z(ca.fields, b8)) {
            return
        }
        ca.fields.push(b8)
    },setLinkFields:function(b7) {
        this.linkFields = typeof(b7) == al[154] ? b7.split(",") : b7
    },onLinkAdd:function(b8) {
        var b9 = z(this.deleteLinks, b8, function(cb, ca) {
            return cb.link == ca
        });
        if (b9) {
            y(this.deleteLinks, b9);
            return
        }
        var b7 = [];
        b9 = z(this.updateLinks, b8, function(cb, ca) {
            return cb.link == ca
        });
        if (b9) {
            y(this.updateLinks, b9);
            b7 = b9.fields
        }
        this.newLinks.push({link:b8,fields:b7})
    },onLinkDelete:function(b7) {
        var b8 = z(this.newLinks, b7, function(ca, b9) {
            return ca.link == b9
        });
        if (b8) {
            y(this.newLinks, b8);
            return
        }
        b8 = z(this.updateLinks, b7, function(ca, b9) {
            return ca.link == b9
        });
        if (b8) {
            y(this.updateLinks, b8)
        }
        this.deleteLinks.push({link:b7})
    },onLinkChange:function(b8, b7, b9) {
        if (z(this.deleteLinks, b8, function(cc, cb) {
            return cc.link == cb
        })) {
            return
        }
        if (!z(this.linkFields, b7)) {
            return
        }
        var ca = z(this.newLinks, b8, function(cc, cb) {
            return cc.link == cb
        });
        if (!ca) {
            ca = z(this.updateLinks, b8, function(cc, cb) {
                return cc.link == cb
            })
        }
        if (!ca) {
            this.updateLinks.push(ca = {link:b8,fields:[]})
        }
        if (z(ca.fields, b7)) {
            return
        }
        ca.fields.push(b7)
    },addNode:function(b7, b8, b9) {
        var ca = b7.ownerDocument.createElement(b8);
        if (b9 != null) {
            ca.appendChild(b7.ownerDocument.createTextNode(this.pack(b9)))
        }
        b7.appendChild(ca);
        return ca
    },addPropertyNode:function(b9, b8, ca) {
        ca = ca ? ca : ["UID"];
        for (var b7 = ca.length - 1; b7 >= 0; b7--) {
            this.addNode(b9, ca[b7], b8[ca[b7]])
        }
    },stop:function() {
        if (!this.listeners) {
            return
        }
        var b7;
        while (b7 = this.listeners.pop()) {
            c(b7)
        }
    },pack:function(b7) {
        switch (typeof(b7)) {case"boolean":return b7 ? "1" : "0";case al[159]:if (b7.constructor == Date) {
            return aa(b7, "s")
        }break
        }
        return b7.toString()
    },depose:function() {
        this.stop();
        for (var b7 in this) {
            this[b7] = null
        }
    }});
    function ao(b8, b9) {
        b8 = this.config = b8 ? b8 : new aq();
        br(this, b8.getConfigObj("SFGantt"));
        this.elementType = al[148];
        this.initContainer();
        this.setViewSize(w(this.container));
        this.controls = [];
        var ca = this.container.ownerDocument;
        this.containerFragment = ca.createDocumentFragment();
        var b7;
        this.addControl(new aY());
        this.addControl(new bG());
        this.addControl(new bp());
        this.addControl(new bS());
        this.taskFields = aL(this.taskFieldNames.split(","));
        this.addControl(new an(this.taskFields));
        this.addControl(new L());
        this.addControl(new W(al[148]));
        this.addControl(new bJ({elementType:al[148]}));
        this.addControl(new bN());
        this.addControl(new bu());
        this.addControl(new ba({elementType:al[148]}));
        this.addControl(b7 = new aG({fields:this.taskFields,bgColor:this.bodyBgColor,elementType:al[148]}));
        this.addControl(new aG({fields:aL(this.taskIdFieldNames.split(",")),bgColor:this.idCellBgColor,mainList:b7,elementType:al[148]}));
        this.addControl(new K());
        this.addControl(new ag());
        this.addControl(new r());
        this.addControl(new bL());
        this.addControl(new bK());
        this.addControl(new bd());
        this.addControl(new bw());
        this.addControl(new bm());
        this.addControl(new bc());
        this.addControl(new b6());
        this.addControl(new a9());
        this.addControl(new N());
        this.addControl(new b3());
        this.addControl(new o());
        this.addControl(new F());
        this.addControl(new bs());
        this.addControl(new aC());
        this.addControl(new Q());
        this.addControl(new E());
        this.addControl(new a());
        this.addControl(new bv());
        this.addControl(new bI());
        this.addControl(new R());
        this.addControl(new be());
        this.container.appendChild(this.containerFragment);
        this.containerFragment = null;
        if (b9) {
            this.setData(b9)
        }
    }

    ai(ao.prototype, {initContainer:function() {
        var b7 = this.container,cb,ca = this.container.ownerDocument;
        try {
            ca.execCommand("BackgroundImageCache", false, true)
        } catch(b9) {
        }
        this.container = b7 = (typeof(b7) == al[159]) ? b7 : document.getElementById(b7);
        var b8 = b7.style;
        if (b8.position != al[84]) {
            b8.position = al[83]
        }
        ai(b8, {padding:"0px",margin:"0px",textAlign:al[82],overflow:al[81],backgroundColor:this.bodyBgColor,fontSize:this.fontSize + "px"});
        while (cb = b7.firstChild) {
            b7.removeChild(cb)
        }
    },addControl:function(b7) {
        if (!b7) {
            return
        }
        if (!b7.initialize(this, this.containerFragment ? this.containerFragment : this.container)) {
            return false
        }
        this.controls.push(b7);
        return true
    },removeControl:function(b7) {
        if (!b7) {
            return
        }
        b7.remove();
        y(b7)
    },initialize:function() {
        if (this.loaded || !this.data) {
            return
        }
        this.loaded = true;
        b0(this, al[80])
    },getContainer:function() {
        return this.container
    },setViewSize:function(b8) {
        var b9 = this.viewSize;
        if (b9 && b9[0] == b8[0] && b9[1] == b8[1]) {
            return
        }
        var b7 = {returnValue:true};
        b0(this, al[79], [b7,b8]);
        if (!b7.returnValue) {
            return false
        }
        this.viewSize = b8;
        b0(this, al[78], [b8]);
        return true
    },getViewSize:function() {
        return this.viewSize
    },setData:function(b7) {
        this.data = b7;
        br(b7, this.config.getConfigObj("SFData"));
        if (!this.loaded) {
            this.initialize()
        }
    },getData:function() {
        return this.data
    },getElementDrawObj:function(b9) {
        var b8 = this.getTagName();
        if (!b9[b8]) {
            var b7 = this.getElementHeight(b9);
            b9[b8] = {height:b7}
        }
        return b9[b8]
    },removeElementDrawObj:function(b8) {
        var b7 = this.getTagName();
        delete b8[b7]
    },getTagName:function() {
        if (!this.tagName) {
            if (!ao._tagIndex) {
                ao._tagIndex = 0
            }
            this.tagName = "drawObj_" + (ao._tagIndex++)
        }
        return this.tagName
    },getElementHeight:function(b7) {
        var b8 = b7.LineHeight;
        return b8 ? b8 : this.itemHeight
    },depose:function() {
        var b7 = this.controls;
        for (var b8 = b7.length - 1; b8 >= 0; b8--) {
            this.removeControl(b7[b8])
        }
        h(this.container, true)
    }});
    function J() {
    }

    ai(J.prototype, {initialize:function() {
        return false
    },remove:function() {
        var b8,b7 = this.listeners;
        if (b7) {
            while (b8 = b7.pop()) {
                c(b8)
            }
        }
        h(this.div);
        delete this.listeners;
        delete this.gantt
    },depose:function() {
        this.remove();
        b2(this);
        for (var b7 in this) {
            this[b7] = null
        }
    }});
    function d(b8, b7, b9) {
        this.unit = b8;
        this.number = b7;
        this.format = b9
    }

    ai(d.prototype, {showHead:function(b8) {
        var b7 = window._SFGantt_config.SFGlobal;
        return aa(b8, this.format, b7)
    },getFloorTime:function(b9) {
        switch (this.unit) {case"Minute":var b7 = b9.getMinutes() % this.number;return new Date(b9.getFullYear(), b9.getMonth(), b9.getDate(), b9.getHours(), b9.getMinutes() - b7);case"Hour":var b7 = b9.getHours() % this.number;return new Date(b9.getFullYear(), b9.getMonth(), b9.getDate(), b9.getHours() - b7);case"Dat":var b7 = (b9.valueOf() - b9.getTimezoneOffset() * 60 * 1000) % (this.number * 24 * 60 * 60 * 1000);
            return new Date(b9.valueOf() - b7);case"Day":var b7 = b9.getDay() % this.number;var b8 = new Date(b9.valueOf() - b7 * 24 * 60 * 60 * 1000);return new Date(b8.getFullYear(), b8.getMonth(), b8.getDate());case"Week":var b7 = b9.getDay();var b8 = new Date(b9.valueOf() - b7 * 24 * 60 * 60 * 1000);return new Date(b8.getFullYear(), b8.getMonth(), b8.getDate());case al[77]:var b7 = b9.getMonth() % this.number;return new Date(b9.getFullYear(), b9.getMonth() - b7);case"Year":var b7 = b9.getFullYear() % this.number;return new Date(b9.getFullYear() - b7);default:return b9
        }
    },getNextTime:function(ca) {
        switch (this.unit) {case"Minute":return new Date(ca.valueOf() + this.number * 60 * 1000);case"Hour":return new Date(ca.valueOf() + this.number * 60 * 60 * 1000);case"Dat":case"Day":return new Date(ca.valueOf() + this.number * 24 * 60 * 60 * 1000);case"Week":return new Date(ca.valueOf() + this.number * 7 * 24 * 60 * 60 * 1000);case al[77]:var b8 = ca.getFullYear(),b9 = ca.getMonth() + this.number;if (b9 == 12) {
            b8++;
            b9 = 0
        }return new Date(b8, b9);case"Year":var b8 = ca.getFullYear() + this.number;var b7 = new Date(0);b7.setYear(b8);return b7;
            default:return ca
        }
    }});
    function ax(b8, ca, cb, b9, cc, b7) {
        if (!cc) {
            if (!ax.idNum) {
                ax.idNum = 0
            }
            cc = "MenuItem_" + (ax.idNum++)
        }
        b7 = b7 ? b7 : 500;
        ai(this, {showHandle:b8,runHandle:ca,text:cb,icon:b9,id:cc,index:b7})
    }

    ai(ax.prototype, {getIndex:function() {
        return this.index
    },setIndex:function(b7) {
        this.index = parseInt(b7)
    },setText:function(b7) {
        this.text = b7
    },setIcon:function(b7) {
        this.icon = b7
    }});
    function a9() {
    }

    a9.prototype = new J();
    ai(a9.prototype, {initialize:function(b7) {
        var b8 = b7.getContainer().style;
        if (b8.width && b8.width.indexOf("%") < 0 && b8.height && b8.height.indexOf("%") < 0) {
            return false
        }
        this.gantt = b7;
        this.listeners = [i(b7.getContainer(), "resize", this, this.onResize),i(window, "resize", this, this.onResize),i(window, al[132], this, this.onResize),i(window, "load", this, this.onResize)];
        return true
    },onResize:function() {
        if (!this.timeout) {
            this.timeout = window.setInterval(u(this, this.onTime), 256)
        }
        this.changed = true;
        this.idleTimes = 0
    },onTime:function() {
        if (!this.changed) {
            this.idleTimes++;
            if (this.idleTimes > 4) {
                window.clearInterval(this.timeout);
                delete this.timeout
            }
            return
        }
        this.changed = false;
        this.resize()
    },resize:function() {
        var b7 = this.gantt;
        b7.setViewSize(w(b7.getContainer()));
        this.timeout = null
    }});
    function bS(b7) {
    }

    bS.prototype = new J();
    ai(bS.prototype, {initialize:function(b8, b7) {
        this.listeners = [i(this.gantt = b8, al[76], this, this.onChange)];
        return true
    },onChange:function(b7) {
        if (!this.timeout) {
            this.timeout = window.setInterval(u(this, this.onTime), 64)
        }
        this.changed = true;
        this.idleTimes = 0;
        this.bodyHeight = b7[1]
    },onTime:function() {
        if (!this.changed) {
            this.idleTimes++;
            if (this.idleTimes > 16) {
                window.clearInterval(this.timeout);
                delete this.timeout
            }
            return
        }
        this.changed = false;
        this.setBodyHeight()
    },setBodyHeight:function() {
        this.gantt.getLayout(al[75]).style.height = this.bodyHeight + 100 + "px"
    },remove:function() {
        if (this.timeout) {
            window.clearInterval(this.timeout)
        }
        J.prototype.remove.apply(this, arguments)
    }});
    function E() {
    }

    E.prototype = new J();
    ai(E.prototype, {initialize:function(b9) {
        if (!b9.getLayout || !b9.getCalList) {
            return false
        }
        var b7 = b9.getLayout("mapHead"),cb = b9.container.ownerDocument;
        if (!b7) {
            return false
        }
        br(this, b9.config.getConfigObj("SFGanttCalDiv"));
        var cc = this.div = cb.createElement("div");
        bR(cc);
        ai(this, {gantt:b9,div:cc,container:b7,cals:{}});
        ai(cc.style, {position:al[84],padding:"0px",margin:"0px"});
        for (var ca = 0; ca < this.calNum; ca++) {
            var b8 = cb.createElement("div");
            ai(b8.style, {position:al[84],padding:"0px",margin:"0px",left:"0px"});
            cc.appendChild(b8)
        }
        b7.appendChild(cc);
        this.listeners = [i(b9, al[80], this, this.onResize),i(b9, al[74], this, this.onResize),i(b9, al[73], this, this.showCal),i(b9, al[132], this, this.showCal)];
        this.onResize();
        return true
    },onResize:function() {
        var b9 = this.gantt,ce = this.div,b8 = ce.parentNode,cb = this.size,cc = [b8.offsetWidth,b8.offsetHeight];
        if (!cb || cb[1] != cc[1]) {
            var cd = this.calNum,b7 = cc[1];
            for (var ca = 0; ca < cd; ca++) {
                ai(ce.childNodes[ca].style, {top:Math.floor(b7 * ca / cd) + "px",height:Math.floor(b7 / cd) + "px"})
            }
        }
        this.size = cc;
        this.showCal()
    },showCal:function() {
        var b8 = this.gantt,ca = b8.getStartTime(),cd = b8.getScale(),b7 = b8.getCalList();
        if (!ca || !cd || !b7) {
            return
        }
        ca = ca.valueOf();
        this.moveTo(cd, ca);
        var cc = this.gantt.getCalList(),cb = this.div.childNodes;
        for (var b9 = 0; b9 < this.calNum; b9++) {
            this.showCalItem(cd, ca, cc[b9], cb[this.calNum - b9 - 1], b9)
        }
    },showCalItem:function(cb, ca, b7, cg, cd) {
        var b8 = this.cals[cd];
        if (!b8 || b8.cal != b7) {
            this.clearItem(cd);
            this.cals[cd] = b8 = {start:ca,cal:b7,scale:cb};
            cg.style.left = (ca - this.drawStart) / cb + "px"
        } else {
            if (b8.scale != cb) {
                for (var b9 = cg.firstChild; b9; b9 = b9.nextSibling) {
                    ai(b9.style, {left:(b9.sTime - b8.start) / cb + "px",width:(b9.eTime - b9.sTime) / cb + "px"})
                }
                cg.style.left = (b8.start - this.drawStart) / cb + "px";
                b8.scale = cb
            }
        }
        var cc = ca + this.container.offsetWidth * cb;
        var ce = cg.firstChild ? cg.firstChild.sTime : Number.MAX_VALUE;
        var cf = cg.lastChild ? cg.lastChild.eTime : Number.MIN_VALUE;
        if (ca > (cg.firstChild ? cg.firstChild.eTime : Number.MAX_VALUE)) {
            while (cg.firstChild && cg.firstChild.eTime < ca) {
                h(cg.firstChild)
            }
            ce = cg.firstChild ? cg.firstChild.sTime : Number.MAX_VALUE
        }
        if ((cg.lastChild ? cg.lastChild.sTime : Number.MIN_VALUE) > cc) {
            while (cg.lastChild && cg.lastChild.sTime > cc) {
                h(cg.lastChild)
            }
            cf = cg.lastChild ? cg.lastChild.eTime : Number.MIN_VALUE
        }
        if (ca < ce) {
            this.addTimeSpans(ca, Math.min(ce, cc), b8, cg, -1);
            ce = cg.firstChild ? cg.firstChild.sTime : Number.MAX_VALUE;
            cf = cg.lastChild ? cg.lastChild.eTime : Number.MIN_VALUE
        }
        if (cf < cc) {
            this.addTimeSpans(Math.max(cf, ca), cc, b8, cg, 1)
        }
    },addTimeSpans:function(ca, cc, b9, cg, cb) {
        var b8 = b9.cal;
        var cd = parseInt(b8.getFloorTime(new Date(ca)).valueOf());
        var ch = null;
        while (cd < cc) {
            var ce = parseInt(b8.getNextTime(new Date(cd)).valueOf());
            var b7 = cg.ownerDocument.createElement("div");
            ai(b7, {sTime:cd,eTime:ce});
            var cf = Math.floor(this.size[1] / this.calNum) - 1;
            ai(b7.style, {position:al[84],left:(cd - b9.start) / b9.scale + "px",top:"0px",width:(ce - cd) / b9.scale + "px",height:cf,fontSize:Math.floor(cf * 0.8) + "px",padding:"0px",lineHeight:cf + "px",borderRight:al[72] + this.gantt.borderColor,borderBottom:al[72] + this.gantt.borderColor,textAlign:al[71]});
            b7.innerHTML = b8.showHead(new Date(cd));
            if (cb == -1) {
                if (ch == null) {
                    cg.insertBefore(b7, cg.firstChild)
                } else {
                    if (ch.nextSibling == null) {
                        cg.appendChild(b7)
                    } else {
                        cg.insertBefore(b7, ch.nextSibling)
                    }
                }
            } else {
                cg.appendChild(b7)
            }
            ch = b7;
            cd = ce
        }
    },clear:function() {
        for (var b7 = 0; b7 < this.calNum; b7++) {
            this.clearItem(b7)
        }
    },clearItem:function(b7) {
        h(this.div.childNodes[this.calNum - b7 - 1], true);
        delete this.cals[b7]
    },moveTo:function(cc, b9) {
        if (!this.drawStart) {
            this.drawStart = b9
        }
        var b7 = parseInt((this.drawStart - b9) / cc);
        if (Math.abs(b7) > 10000) {
            this.drawStart = b9;
            var ca = this.calNum;
            for (var b8 = 0;
                 b8 < ca; b8++) {
                if (!this.cals[b8]) {
                    continue
                }
                var cb = parseInt((this.cals[b8].start - this.drawStart) / cc);
                if (Math.abs(cb) > 10000) {
                    this.cals[b8].start = this.drawStart;
                    for (var cd = this.div.childNodes[b8].firstChild; cd; cd = cd.nextSibling) {
                        cd.style.left = parseInt(cd.style.left + b7) + "px"
                    }
                    cb = 0
                }
                this.div.childNodes[b8].style.left = cb + "px"
            }
            b7 = 0
        }
        this.div.style.left = b7 + "px"
    }});
    function Q() {
    }

    Q.prototype = new J();
    ai(Q.prototype, {initialize:function(ca, b8) {
        this.gantt = ca;
        var b7 = ca.config.getConfig("SFGanttCalendarItem/formats");
        var b9 = {Minute15:new d("Minute", 15, b7.Minute15),Hour:new d("Hour", 1, b7.Hour),Hour2:new d("Hour", 2, b7.Hour2),Hour6:new d("Hour", 6, b7.Hour6),Dat:new d("Dat", 1, b7.Dat),Dat1:new d("Dat", 1, b7.Dat1),Day:new d("Day", 1, b7.Day),Day3:new d("Dat", 3, b7.Day3),Day7:new d("Day", 7, b7.Day7),Week:new d("Week", 1, b7.Week),Month:new d(al[77], 1, b7.Month),Month1:new d(al[77], 1, b7.Month1),Quarter:new d(al[77], 3, b7.Quarter),Quarter1:new d(al[77], 3, b7.Quarter1),Quarter2:new d(al[77], 6, b7.Quarter2),Year:new d("Year", 1, b7.Year),Year1:new d("Year", 1, b7.Year1),Year5:new d("Year", 5, b7.Year5),Year10:new d("Year", 10, b7.Year10)};
        this.levels = [
            {
                scale:3 * 60000 / 6,
                cals:[b9.Minute15,b9.Hour,b9.Dat]
            },
            {
                scale:30 * 60000 / 6,
                cals:[b9.Hour2,b9.Dat,b9.Week]
            },
            {
                scale:3600000 / 6,
                cals:[b9.Hour6,b9.Dat,b9.Week]
            },
            {
                scale:4 * 3600000 / 6,
                cals:[b9.Day,b9.Week,b9.Month]
            },
            {
                scale:12 * 3600000 / 6,
                cals:[b9.Day3,b9.Month,b9.Quarter]
            },
            {
                scale:24 * 3600000 / 6,
                cals:[b9.Day7,b9.Month,b9.Year]
            },
            {
                scale:96 * 3600000 / 6,
                cals:[b9.Month1,b9.Quarter,b9.Year]
            },
            {
                scale:192 * 3600000 / 6,
                cals:[b9.Month1,b9.Year,b9.Year]
            },
            {
                scale:576 * 3600000 / 6,
                cals:[b9.Quarter1,b9.Year,b9.Year5]
            },
            {
                scale:1728 * 3600000 / 6,
                cals:[b9.Quarter2,b9.Year1,b9.Year10]
            }
        ];
        ai(ca, {getCalList:u(this, this.getCalList)});
        this.listeners = [i(ca, al[80], this, this.onScaleChange),i(ca, al[73], this, this.onScaleChange)];
        this.onScaleChange();
        return true
    },getCalList:function() {
        return this.calList
    },onScaleChange:function() {
        var b9 = this.gantt.getScale(),b8 = this.levels,b7;
        if (!b9) {
            return
        }
        for (b7 = b8.length - 1; b7 >= 0; b7--) {
            if (b9 > b8[b7].scale) {
                b7++;
                break
            }
        }
        b7 = Math.min(Math.max(b7, 0), b8.length - 1);
        this.calList = b8[b7].cals
    },remove:function() {
        var b7 = this.gantt;
        delete b7.getCalList;
        J.prototype.remove.apply(this, arguments)
    }});
    function ba() {
    }

    ba.prototype = new J();
    ai(ba.prototype, {initialize:function(b7) {
        this.listeners = [i(this.gantt = b7, al[80], this, this.onGanttInit)];
        return true
    },onGanttInit:function() {
        var b7 = this.gantt;
        this.listeners = this.listeners.concat([i(b7.getData(), al[131] + b7.elementType.toLowerCase() + al[140], this, this.onElementUpdate)])
    },onElementUpdate:function(b8, b7, cc, b9) {
        var cb,ca;
        if (!(ca = this.changedElements)) {
            ca = this.changedElements = []
        }
        if (cb = z(ca, b8, function(ce, cd) {
            return ce.element == cd
        })) {
            if (!z(cb.fields, b7)) {
                cb.fields.push(b7)
            }
        } else {
            ca.push({element:b8,fields:[b7]})
        }
        if (!this.eut) {
            this.eut = window.setInterval(u(this, this.onTime), 256)
        }
        this.changed = true;
        this.idleTimes = 0
    },onTime:function() {
        if (!this.changed) {
            this.idleTimes++;
            if (this.idleTimes > 4) {
                window.clearInterval(this.eut);
                delete this.eut
            }
            return
        }
        this.changed = false;
        this.triggerUpdate()
    },triggerUpdate:function() {
        var b7,b8 = this.changedElements;
        while (b7 = b8.pop()) {
            this.onElementChange(b7.element, b7.fields)
        }
    },onElementChange:function(b8, b9) {
        var b7 = this.gantt;
        b0(this.gantt, b7.elementType.toLowerCase() + al[129], [b8,b9])
    }});
    function K() {
    }

    K.prototype = new J();
    ai(K.prototype, {initialize:function(b9, b7) {
        if (!b9.getLayout || b9.disableCollapse || !b9.getLayout(al[70]) || !b9.getLayout(al[75]) || b9.spaceWidth < 4) {
            return false
        }
        var ca = this.width = b9.spaceWidth,cb = b9.container.ownerDocument;
        var cc = this.div = cb.createElement("div");
        ai(cc.style, {position:al[84],zIndex:200,top:"0px",width:ca + "px",height:al[69],backgroundColor:b9.columnBarColor,borderLeft:al[72] + b9.borderColor,borderRight:al[72] + b9.borderColor});
        B(cc, al[68]);
        var b8 = this.listColImg = cb.createElement("img");
        ai(b8.style, {position:al[84],zIndex:200,top:ca + "px",left:(ca - 4) / 2 + "px",width:"4px",height:"7px"});
        B(b8, al[158]);
        bq(b8, b9.imgPath + "column_left" + b9.imgType);
        cc.appendChild(b8);
        var b8 = this.mapColImg = cb.createElement("img");
        ai(b8.style, {position:al[84],zIndex:200,top:(ca + 10) + "px",left:(ca - 4) / 2 + "px",width:"4px",height:"7px"});
        B(b8, al[158]);
        bq(b8, b9.imgPath + "column_right" + b9.imgType);
        cc.appendChild(b8);
        if (b9.setContextMenu) {
            b9.setContextMenu(cc, function(cd) {
                cd.type = al[67];
                return true
            })
        }
        b7.appendChild(cc);
        this.gantt = b9;
        this.listeners = [i(cc, al[152], this, this.onMouseDown),i(b9, al[74], this, this.onLayoutChange)];
        return true
    },onLayoutChange:function() {
        var b9 = this.gantt,b7 = b9.getLayout(al[70]),b8 = b9.getLayout(al[75]);
        var ca = bY(b7, b9.getContainer()),cb = bY(b8, b9.getContainer());
        var cc = Math.max(ca[0], cb[0]);
        if ((!b9.isListShow() && cc == ca[0]) || (!b9.isChartShow() && cc == cb[0])) {
            cc = bY(b7.parentNode, b9.getContainer())[0] + b7.parentNode.offsetWidth
        }
        this.div.style.left = cc - this.width + "px";
        bq(this.listColImg, b9.imgPath + "column_" + (b7.offsetWidth == 0 ? al[66] : al[82]) + b9.imgType);
        bq(this.mapColImg, b9.imgPath + "column_" + (b8.offsetWidth == 0 ? al[82] : al[66]) + b9.imgType)
    },onMouseDown:function(b7) {
        if (bT(b7) != 1) {
            return
        }
        k(b7);
        if (this.dragObj) {
            this.onMouseUp(b7)
        }
        if (b7.target == this.listColImg) {
            this.gantt.collapseList();
            return
        }
        if (b7.target == this.mapColImg) {
            this.gantt.collapseMap();
            return
        }
        new q(this.div, u(this, this.onMove), {container:this.gantt.getContainer()}).onMouseDown(b7)
    },onMove:function(b9, b7, b8) {
        if (b8 == al[149]) {
            this.startColumn = this.gantt.listWidth * 1
        }
        var ca = this.startColumn + b7[0] - b9[0];
        this.div.style.left = ca + this.gantt.idCellWidth + "px";
        if (b8 == "end") {
            this.gantt.setListWidth(ca)
        }
    }});
    function L() {
    }

    L.prototype = new J();
    ai(L.prototype, {initialize:function(b7) {
        if (b7.disableCursor) {
            return false
        }
        this.gantt = b7;
        b7.setCursor = u(b7, aQ);
        return true
    },remove:function() {
        var b7 = this.gantt;
        delete b7.setCursor;
        delete this.gantt
    }});
    function aQ(cb, b8) {
        if (b8.indexOf(",") > 0) {
            var b9 = b8.split(",");
            for (var b7 = 0; b7 < b9.length; b7++) {
                if (this.setCursor(cb, b9[b7])) {
                    return true
                }
            }
            return false
        }
        try {
            if (b8.toLowerCase().indexOf(".cur") > 0) {
                b8 = "url(" + this.imgPath + "cursor/" + b8 + "),auto"
            }
            b8 = b8.toLowerCase();
            if (b8 == "hand" && !document.all) {
                b8 = al[158]
            }
            cb.style.cursor = b8;
            return true
        } catch(ca) {
            return false
        }
    }

    ai(L, {setCursor:aQ});
    function ag() {
    }

    ag.prototype = new J();
    ai(ag.prototype, {initialize:function(b8, b7) {
        if (b8.disableDragResize) {
            return false
        }
        var b9 = this.div = doc = b8.container.ownerDocument.createElement("img");
        bq(b9, b8.imgPath + "resize" + b8.imgType);
        ai(b9.style, {position:al[84],width:"16px",height:"16px",right:"0px",bottom:"0px",zIndex:200});
        B(b9, "se-resize");
        this.listeners = [bi(b9, u(this, this.onMove), {container:b8.getContainer()})];
        b7.appendChild(b9);
        this.gantt = b8;
        return true
    },onMove:function(cb, b7, ca) {
        var b8 = this.gantt;
        if (ca == al[149]) {
            this.startSize = b8.getViewSize();
            return
        }
        var b9 = [this.startSize[0] + b7[0] - cb[0],this.startSize[1] + b7[1] - cb[1]];
        if (b8.setViewSize(b9)) {
            ai(b8.getContainer().style, {width:b9[0] + "px",height:b9[1] + "px"})
        }
    }});
    function a() {
    }

    a.prototype = new J();
    ai(a.prototype, {initialize:function(b8) {
        if (b8.disableDragZoom || !b8.getLayout) {
            return false
        }
        var b7 = b8.getLayout("mapHead");
        if (!b7) {
            return false
        }
        B(b7, al[68]);
        this.gantt = b8;
        this.container = b7;
        this.listeners = [bi(b7, u(this, this.onMove), {interval:32})];
        return true
    },onMove:function(b9, b7, b8) {
        if (b8 == al[149]) {
            this.startScale = this.gantt.getScale()
        }
        if (b7[0] > 1) {
            var ca = this.startScale * b9[0] / b7[0];
            this.gantt.setScale(ca)
        }
    }});
    function aG(b7) {
        ai(this, b7)
    }

    aG.prototype = new J();
    ai(aG.prototype, {initialize:function(b9) {
        if (!b9.getLayout) {
            return false
        }
        var b7 = this.container = b9.getLayout(this.mainList ? "listId" : al[70]),ci = b9.container.ownerDocument;
        if (!b7) {
            return false
        }
        this.gantt = b9;
        this.elementStyles = b9.config.getConfigObj("SFGantt/" + b9.elementType.toLowerCase() + "Style");
        br(this, b9.config.getConfigObj("SFGanttElementList"));
        if (!aG.listIndex) {
            aG.listIndex = 0
        }
        this.proTag = "listRow_" + (aG.listIndex++);
        var ck = this.div = ci.createElement(al[65]);
        ai(ck, {bgColor:b9.borderColor,border:0,cellSpacing:1,cellPadding:0});
        ai(ck.style, {fontSize:"0px",position:al[83],left:"-2px",top:"-3px",tableLayout:"fixed",zIndex:100});
        bR(ck);
        var cc = ck.insertRow(-1),cg = this.bgColor;
        cg = cg ? cg : al[64];
        ai(cc, {bgColor:cg});
        var ce = 0,cd = this.fields;
        var ca = cc.insertCell(-1);
        ai(ca, {height:1,width:1});
        var cj = document.compatMode ? "nowrap" : "pre";
        ai(ca.style, {overflow:al[81],fontSize:"0px",whiteSpace:cj});
        for (var cb = 0; cb < cd.length; cb++) {
            ca = cc.insertCell(-1);
            ai(ca.style, {overflow:al[81],fontSize:"0px",whiteSpace:cj});
            var b8 = cd[cb].width;
            ce += b8 + 1;
            ai(ca, {width:b8})
        }
        var cc = ck.insertRow(-1);
        ai(cc, {bgColor:cg});
        var ca = cc.insertCell(-1);
        ai(ca, {height:(b9.itemHeight - 1) * 1});
        ai(ca.style, {overflow:al[81],whiteSpace:cj});
        for (var cb = 0; cb < this.fields.length; cb++) {
            ca = cc.insertCell(-1);
            ai(ca.style, {overflow:al[81],whiteSpace:cj})
        }
        ck.width = ce + 3;
        this.container.appendChild(ck);
        var ch = this.elementType.toLowerCase();
        var cf = this.listeners = [i(b9, ch + "inview", this, this.drawElement),i(b9, ch + "outview", this, this.clearElement),i(b9, ch + al[129], this, this.updateElement),i(ck, al[63], this, this.onTableClick),i(ck, al[62], this, this.onTableDblClick)];
        if (b9.setContextMenu) {
            b9.setContextMenu(ck, function(cl) {
                cl.type = al[61];
                return true
            })
        }
        cf.push(i(ck, al[152], this, this.onTableMouseDown));
        if (this.mainList) {
            if (!this.disableAdjustLineHeight) {
                cf.push(i(ck, al[151], this, this.onTableMouseOver))
            }
        } else {
            cf.push(i(b9, al[60], this, this.onHeadMove));
            cf.push(i(b9, al[59], this, this.onHeadResize))
        }
        if (this.disableDragOrder) {
            this.mainList = null
        }
        if (b9.setCursor) {
            b9.setCursor(ck, this.mainList ? al[58] : "fieldedit.cur,default")
        }
        return true
    },setViewTop:function() {
        var b7 = this.gantt.getViewTop();
        this.div.rows[0].cells[0].height = b7 + 1
    },applyRowStyle:function(cc, b8) {
        var ca = b8.ClassName;
        ca = ca ? ca : this.elementStyle;
        var cb = this.elementStyles[ca];
        if (cb) {
            var b9 = b8.Selected ? cb.listSelectedStyle : cb.listStyle;
            if (b9) {
                ai(cc.style, b9);
                return
            }
        }
        var b7 = this.gantt,b9 = this.mainList ? (b8.Selected ? {backgroundColor:b7.listFocusColor} : {backgroundColor:this.gantt.idCellBgColor}) : (b8.Selected ? {backgroundColor:b7.listFocusColor} : {backgroundColor:al[64]});
        ai(cc.style, b9)
    },drawElement:function(ca, cg) {
        if (cg == 0) {
            this.setViewTop()
        }
        var b8 = this.gantt,b7 = b8.getElementDrawObj(ca);
        var ch = this.div.insertRow(cg + 1);
        this.applyRowStyle(ch, ca);
        var ce = ch.insertCell(-1);
        var cd = document.compatMode ? "nowrap" : "pre";
        ai(ce, {height:(b8.getElementHeight(ca) - 1) * 1,width:1});
        ce.style.cssText = "overflow:hidden;white-space:" + cd + ";font-size:0px;";
        b7[this.proTag] = ch;
        ch._Element = ca;
        var cc = this.container.ownerDocument,cb = this.fields;
        for (var b9 = 0; b9 < cb.length; b9++) {
            var ce = cc.createElement("td");
            var cf = [];
            cf.push("overflow:hidden");
            cf.push("white-space:" + cd);
            cf.push("font-size:" + b8.fontSize + "px");
            if (ca.Summary) {
                cf.push("font-weight:bolder")
            }
            ce.style.cssText = cf.join(";");
            cb[b9].showBody(ce, ca, this);
            ch.appendChild(ce)
        }
    },clearElement:function(b9, b8) {
        if (b8 == 0) {
            this.setViewTop()
        }
        this.clearInputCell();
        var b7 = this.gantt.getElementDrawObj(b9);
        h(b7[this.proTag]);
        b7[this.proTag] = null
    },clearInputCell:function() {
        if (this.focusObj && this.focusObj.inputCell >= 0) {
            var b9 = this.focusObj.element;
            var ca = this.fields[this.focusObj.inputCell];
            var b8 = this.gantt.getElementDrawObj(b9);
            var b7 = b8[this.proTag].cells;
            ca.showBody(b7[this.focusObj.inputCell + 1], b9, this);
            this.focusObj.inputCell = -1
        }
    },onHeadMove:function(b7) {
        this.div.style.left = b7 + "px"
    },onHeadResize:function(cb) {
        var ca = this.div,b7 = ca.rows[0].cells,b9 = 0;
        for (var b8 = 0; b8 < cb.length; b8++) {
            b7[b8 + 1].width = cb[b8];
            b9 += cb[b8] + 1
        }
        ca.width = b9 + 3
    },getEventRow:function(b9) {
        var b8 = b9.target;
        var ca,b7 = b8;
        while (b7) {
            if (b7.nodeName == "TR") {
                ca = b7
            }
            if (b7 == this.div) {
                break
            }
            b7 = b7.parentNode
        }
        if (!ca || !ca._Element) {
            return
        }
        return ca
    },onTableMouseOver:function(cc) {
        var cd = this.getEventRow(cc);
        if (!cd) {
            var b7 = bW(cc, this.div)[1];
            for (cd = this.div.rows[0]; cd; cd = cd.nextSibling) {
                b7 -= cd.offsetHeight;
                if (b7 < 0) {
                    break
                }
            }
            if (!cd || !cd._Element) {
                return
            }
        }
        var cb = cd._Element,b8 = this.gantt;
        var ca = 3,b7 = bU(cc, cd)[1];
        if (b7 < ca || b7 >= b8.getElementHeight(cb) - ca - 1) {
            var b9 = b7 < ca ? cb.getPreviousView() : cb;
            if (b9 && b9.canSetProperty(al[113])) {
                if (b8.setCursor) {
                    b8.setCursor(this.div, "heightChange.cur,default")
                }
                this.dragMode = al[57];
                return
            }
        }
        if (b8.setCursor) {
            b8.setCursor(this.div, cb.Selected ? al[56] : al[58])
        }
        this.dragMode = ""
    },onTableMouseDown:function(b8) {
        var b9 = this.getEventRow(b8);
        if (!b9) {
            return
        }
        var b7 = b9._Element;
        b0(this.gantt, this.elementType.toLowerCase() + al[152], [b7,b8]);
        if (bT(b8) != 1) {
            return
        }
        if (this.mainList) {
            if (this.dragMode == al[57]) {
                if (bW(b8, b9)[1] < 3) {
                    b7 = b7.getPreviousView();
                    if (!b7) {
                        return
                    }
                    b9 = gantt.getElementDrawObj(b7)[this.proTag]
                }
            }
            this.dragElement = b7;
            new q(b9, u(this, (this.dragMode == al[57]) ? this.onItemHeightMove : this.onTableMove)).onMouseDown(b8)
        }
    },onItemHeightMove:function(cd, cb, cc) {
        var ca = this.dragElement,b9 = this.gantt;
        if (cc == al[149]) {
            this.startHeight = b9.getElementHeight(ca);
            return
        }
        var b8 = b9.getElementDrawObj(ca)[this.proTag].cells[0];
        var b7 = Math.max(this.startHeight + cb[1] - cd[1], 10);
        if (cc != "end") {
            b8.height = b7 - 1
        } else {
            b8.height = this.startHeight - 1;
            if (this.startHeight != b7) {
                ca.setProperty(al[113], b7)
            }
        }
    },onTableMove:function(b8, cd, ce) {
        if (ce != "end") {
            var b9 = cd[1] > b8[1];
            var ca = this.gantt,cb = this.dragElement;
            var b7 = b9 ? (cd[1] - ca.getElementHeight(cb)) : cd[1];
            while (cb) {
                var cc = b9 ? cb.getNextView() : cb.getPreviousView();
                if (!cc) {
                    break
                }
                var cf = ca.getElementHeight(cc);
                if (cc && cc != this.gantt.data.getRootElement(this.elementType) && (b9 ? (b7 - cf / 2) : (b7 + cf / 2)) * (b9 ? 1 : -1) > 0) {
                    cb = cc;
                    b7 = b9 ? (b7 - cf) : (b7 + cf)
                } else {
                    break
                }
            }
            this.dragDir = b9;
            this.flagElement = cb;
            this.mainList.showElementMoveFlag(cb, this.dragElement, this.dragDir)
        } else {
            if (this.flagElement && this.flagElement != this.dragElement) {
                this.moveElement(this.dragElement, this.flagElement, this.dragDir)
            }
            this.mainList.showElementMoveFlag(this.dragElement, this.dragElement)
        }
    },showElementMoveFlag:function(cb, b8, b9) {
        if (this.flagDiv) {
            if (cb == this.flagElement) {
                return
            }
            h(this.flagDiv);
            this.flagDiv = null;
            this.flagElement = cb
        }
        if (!cb || b8.contains(cb)) {
            return
        }
        var ca = this.gantt,ce = bY(ca.getElementDrawObj(cb)[this.proTag], this.container)[1],cc = this.container.ownerDocument;
        ce = b9 ? (ce + ca.getElementHeight(cb) - 14) : (ce - 14);
        var cf = cc.createElement(al[65]);
        cf.cellSpacing = 0;
        s;
        ai(cf.style, {position:al[84],width:al[69],zIndex:200,height:"21px",left:"3px",top:ce + "px"});
        var cg = cf.insertRow(-1);
        var cd = cg.insertCell(-1);
        cd.width = 3;
        var b7 = cc.createElement("img");
        ai(b7.style, {width:"3px",height:"21px"});
        bq(b7, this.gantt.imgPath + "dragflag_left" + this.gantt.imgType);
        cd.appendChild(b7);
        var cd = cg.insertCell(-1);
        bq(cd, this.gantt.imgPath + "dragflag_right" + this.gantt.imgType);
        this.container.appendChild(cf);
        this.flagDiv = cf
    },moveElement:function(cc, cb, b9) {
        var b8,ce = null,b7 = null;
        if (b9) {
            var ca = cb.getNextView();
            if (!ca || ca.getOutlineLevel() < cb.getOutlineLevel()) {
                ce = cb
            } else {
                b7 = ca
            }
        } else {
            var b8 = cb.getPreviousView();
            if (!b8 || b8.getOutlineLevel() <= cb.getOutlineLevel()) {
                b7 = cb
            } else {
                ce = b8
            }
        }
        var cd = this.gantt.data;
        if (ce) {
            cd.moveElement(cc.elementType, cc, ce.getParent(), ce)
        } else {
            cd.moveElement(cc.elementType, cc, b7.getParent(), b7.getPreviousSibling())
        }
    },updateElement:function(cc, b8) {
        var ca = this.gantt;
        if (cc == ca.getData().getRootElement(this.elementType)) {
            return
        }
        var b9 = ca.getElementDrawObj(cc);
        var cf = b9[this.proTag];
        if (!cf) {
            return
        }
        if (z(b8, al[55])) {
            var cb = cc.Selected;
            if (!cb && this.focusObj && this.focusObj.element == cc) {
                this.clearInputCell()
            }
            this.applyRowStyle(cf, cc);
            if (this.mainList && ca.setCursor) {
                ca.setCursor(cf, cb ? al[56] : al[58])
            }
        }
        if (z(b8, al[115])) {
            this.applyRowStyle(cf, cc)
        }
        for (var cd = 0;
             cd < this.fields.length; cd++) {
            if (!this.fields[cd].checkUpdate(b8)) {
                continue
            }
            var ce = cf.cells[cd + 1];
            h(ce, true);
            var b7 = ce.style;
            b7.fontSize = ca.fontSize + "px";
            this.fields[cd].showBody(ce, cc, this)
        }
        if (z(b8, al[130])) {
            for (var cd = 0; cd < this.fields.length; cd++) {
                cf.cells[cd + 1].style.fontWeight = cc.Summary ? "bolder" : ""
            }
        }
    },onTableDblClick:function(cc) {
        var cd = this.getEventRow(cc);
        if (!cd) {
            return
        }
        var b9 = cd._Element;
        var cb,b8,ca = bW(cc, cd)[0],b7 = this.fields;
        for (b8 = 0; b8 < b7.length; b8++) {
            ca -= b7[b8].width;
            if (ca < 0) {
                cb = b7[b8];
                break
            }
        }
        b0(this.gantt, this.elementType.toLowerCase() + al[62], [b9,al[61],cb.Name])
    },onTableClick:function(cd) {
        var ce = this.getEventRow(cd),b8 = this.gantt;
        if (!ce) {
            if (b8.clearSelectedElement) {
                b8.clearSelectedElement()
            }
            return
        }
        var ca = ce._Element;
        b0(b8, this.elementType.toLowerCase() + al[63], [ca,cd]);
        if (!b8.readOnly && !b8.disableUpdateElement && !this.disableInput) {
            var b9,cc = bW(cd, ce)[0],b7 = this.fields;
            for (b9 = 0; b9 < b7.length; b9++) {
                cc -= b7[b9].width;
                if (cc < 0) {
                    break
                }
            }
            if (b9 == b7.length) {
                return
            }
            var cb = b7[b9];
            this.clearInputCell();
            if (cb.inputFunc && !cb.ReadOnly && (!cb.inputData || ca.canSetProperty(cb.inputData))) {
                this.focusObj = {inputCell:b9,element:ca};
                cb.showInput(b8.getElementDrawObj(ca)[this.proTag].cells[b9 + 1], ca, this)
            }
        }
    }});
    function bJ() {
        this.selectedElements = []
    }

    bJ.prototype = new J();
    ai(bJ.prototype, {initialize:function(b9, b7) {
        if (b9.disableSelect) {
            return false
        }
        this.gantt = b9;
        var b8 = b9.elementType;
        ai(b9, {getFocusElement:b9["getFocus" + b8] = u(this, this.getFocusElement),getSelectedElements:b9[al[54] + b8 + "s"] = u(this, this.getSelectedElements),setSelectedElement:b9[al[53] + b8] = u(this, this.setSelectedElement),clearSelectedElement:b9[al[52] + b8] = u(this, this.clearSelectedElement)});
        this.listeners = [i(b9, b8.toLowerCase() + al[152], this, this.onElementClick),i(b9, al[80], this, this.onGanttInit)];
        return true
    },onGanttInit:function() {
        var b7 = this.gantt,b9 = b7.getData(),b8 = b7.elementType.toLowerCase();
        this.listeners = this.listeners.concat([i(b9, b8 + al[139], this, this.onRegister),i(b9, b8 + al[138], this, this.onUnRegister),i(b9, al[131] + b8 + al[129], this, this.onElementChange)])
    },onRegister:function(b7) {
        if (b7.Selected) {
            this.selectedElements.push(b7)
        }
    },onUnRegister:function(b7) {
        if (b7.Selected) {
            y(this.selectedElements, b7)
        }
    },onElementClick:function(b9, ca) {
        if (!ca || bT(ca) == 2) {
            if (!b9.Selected) {
                this.clearSelectedElement();
                b9.setProperty(al[55], true)
            }
        } else {
            var cc = this.selectedElements;
            if (ca.shiftKey && cc[0]) {
                var cb = cc[cc.length - 1];
                var b7 = this.gantt.data.compareElement(cb, b9) > 0;
                var b8 = cb;
                while (b8) {
                    b8 = b7 ? b8.getNextView() : b8.getPreviousView();
                    if (b8) {
                        b8.setProperty(al[55], true)
                    }
                    if (b8 == b9) {
                        return
                    }
                }
            } else {
                if (ca.ctrlKey) {
                    b9.setProperty(al[55], !b9.Selected)
                } else {
                    this.clearSelectedElement();
                    b9.setProperty(al[55], true)
                }
            }
        }
    },onElementChange:function(b8, b7, ca) {
        if (b7 == al[55]) {
            var b9 = this.gantt.elementType.toLowerCase();
            b0(this.gantt, b9 + (ca ? "focus" : "blur"), [b8]);
            if (ca) {
                this.selectedElements.push(b8)
            } else {
                y(this.selectedElements, b8)
            }
        }
    },getFocusElement:function() {
        return this.selectedElements[this.selectedElements.length - 1]
    },getSelectedElements:function() {
        return this.selectedElements
    },setSelectedElement:function(b7) {
        if (this.selectedElements && this.selectedElements[0] == b7 && !this.selectedElements[1]) {
            return
        }
        this.clearSelectedElement();
        b7.setProperty(al[55], true)
    },clearSelectedElement:function() {
        var b7,b8 = this.selectedElements;
        while (b7 = b8.pop()) {
            b7.setProperty(al[55], false)
        }
    },remove:function() {
        var b8 = this.gantt;
        delete b8.getFocusElement;
        delete b8.getSelectedElements;
        delete b8.setSelectedElement;
        delete b8.clearSelectedElement;
        var b7 = b8.elementType;
        delete b8["getFocus" + b7];
        delete b8[al[54] + b7 + "s"];
        delete b8[al[53] + b7];
        delete b8[al[52] + b7];
        this.selectedElements = [];
        J.prototype.remove.apply(this, arguments)
    }});
    function an(b7) {
        this.fields = b7
    }

    an.prototype = new J();
    ai(an.prototype, {initialize:function(b9) {
        if (!b9.getLayout) {
            return false
        }
        var b7 = b9.getLayout("listHead"),cc = b9.container.ownerDocument;
        if (!b7) {
            return false
        }
        var cb = this.fields,ce = cc.createElement(al[65]);
        ai(this, {container:b7,gantt:b9,div:ce,fieldIndex:-1});
        ai(ce, {bgColor:b9.borderColor,border:0,cellSpacing:1,cellPadding:0});
        ai(ce.style, {fontSize:"0px",height:(b9.headHeight + 2) + "px",left:"-2px",top:"-1px",position:al[83],tableLayout:"fixed"});
        var cf = this.div.insertRow(-1);
        ai(cf, {bgColor:b9.headBgColor});
        var cd = cf.insertCell(-1);
        cd.width = 1;
        this.widths = [];
        for (var ca = 0; ca < cb.length; ca++) {
            cd = cf.insertCell(-1);
            cd.vAlign = "top";
            var b8 = cb[ca].width * 1;
            ai(cd.style, {overflow:al[81],fontSize:b9.fontSize + "px",whiteSpace:(document.compatMode ? "nowrap" : "pre")});
            cb[ca].showHead(cd, this);
            this.widths.push(b8)
        }
        b7.appendChild(this.div);
        this.listeners = [i(b9, al[80], this, this.setWidth),bi(ce, u(this, this.onDrag)),i(ce, al[151], this, this.onMouseMove),i(b7, al[51], this, this.onScroll)];
        return true
    },onScroll:function() {
        b0(this.gantt, al[60], [parseInt(this.div.style.left)])
    },setWidth:function() {
        var cb = this.div,b7 = cb.rows[0].cells,b9 = 0,ca = this.widths;
        for (var b8 = 0; b8 < ca.length; b8++) {
            b7[b8 + 1].width = ca[b8];
            b9 += ca[b8] * 1 + 1
        }
        cb.width = b9 + 3;
        b0(this.gantt, al[59], [this.widths])
    },onMouseMove:function(cb) {
        var b7 = -1,ca = bW(cb, this.div)[0] - 3,b9 = this.widths;
        for (var b8 = 0; b8 < b9.length; b8++) {
            ca -= b9[b8];
            if (Math.abs(ca) < 5) {
                b7 = b8;
                break
            }
            if (ca < 0) {
                break
            }
        }
        this.fieldIndex = b7;
        B(this.div, b7 < 0 ? al[50] : al[49])
    },onDrag:function(ca, b7, b9) {
        if (b9 == al[149]) {
            B(this.div, al[49]);
            this.dragNum = this.fieldIndex;
            this.dragWidth = this.widths[this.fieldIndex];
            return
        }
        var b8 = Math.max(this.dragWidth + b7[0] - ca[0], 20);
        this.widths[this.dragNum] = b8;
        this.setWidth();
        if (b9 == "end") {
            B(this.div, al[50])
        }
    }});
    function r() {
    }

    r.prototype = new J();
    ai(r.prototype, {initialize:function(b9) {
        var b8,cb = b9.container.ownerDocument;
        if (b9.disableHelpLink || !b9.getLayout || !(b8 = b9.getLayout("head"))) {
            return false
        }
        var ca = this.div = cb.createElement("div");
        ai(ca.style, {position:al[84],backgroundColor:b9.headBgColor,width:"16px",right:"0px",top:"0px",textAlign:al[66],padding:"3px"});
        var b7 = cb.createElement("a");
        ai(b7.style, {fontSize:"24px",color:al[48],textDecoration:al[47]});
        b7.appendChild(cb.createTextNode("?"));
        b7.title = SFNS.vinfo ? aa(ac(SFNS.vinfo.time), "s") : "";
        ai(b7, {href:"<%HelpLink%>",target:"_blank"});
        ca.appendChild(b7);
        b8.appendChild(ca);
        return true
    }});
    function bp() {
        this.panels = {}
    }

    bp.prototype = new J();
    ai(bp.prototype, {initialize:function(b8, b7) {
        this.gantt = b8;
        this.spaceWidth = b8.spaceWidth;
        b8.getLayout = u(this, this.getLayout);
        b8.collapseMap = b8.collapseChart = u(this, this.collapseChart);
        b8.collapseList = u(this, this.collapseList);
        b8.isListShow = u(this, this.isListShow);
        b8.isChartShow = u(this, this.isChartShow);
        b8.setListWidth = u(this, this.setListWidth);
        this.createLayout(b7);
        this.listeners = [i(b8, al[80], this, this.onColumnResize),i(b8, "heightchange", this, this.onHeightChange),i(b8, al[78], this, this.onGanttResize)];
        return true
    },getLayout:function(b7) {
        return this.panels[b7]
    },createLayout:function(b8) {
        var ca = this.gantt,ci = this.panels,cm = b8.ownerDocument;
        var ck = ca.listWidth * 1,cc = ca.getViewSize()[0] - ck - ca.idCellWidth;
        if (ck <= 0 || cc <= 0) {
            this.spaceWidth = 10
        }
        if (ca.headHeight > 0) {
            var b7 = ci.head = cm.createElement("div");
            B(cd, al[50]);
            bR(b7);
            ai(b7.style, {position:al[84],zIndex:100,left:"0px",top:"0px",width:al[69],height:ca.headHeight + "px",backgroundColor:ca.headBgColor,borderBottom:al[72] + ca.borderColor});
            if (ck > 0) {
                var cd = ci.listHead = cm.createElement("div");
                ai(cd.style, {position:al[84],top:"0px",left:ca.idCellWidth + "px",height:ca.headHeight + "px",overflow:al[81],borderLeft:al[72] + ca.borderColor});
                b7.appendChild(cd)
            }
            if (cc > 0) {
                var cb = ci.mapHead = cm.createElement("div");
                ai(cb.style, {position:al[84],top:"0px",height:ca.headHeight + "px",top:"0px",left:"0px",width:al[69],overflowX:al[81],borderLeft:al[72] + ca.borderColor,borderRight:al[72] + ca.borderColor});
                b7.appendChild(cb)
            }
            b8.appendChild(b7)
        }
        var cj = ci.bodyScroll = cm.createElement("div");
        ai(cj.style, {position:al[84],zIndex:100,overflowY:al[81],overflowX:al[81],left:"0px",top:ca.headHeight + 1 + "px",width:al[69],height:(ca.getContainer().offsetHeight - ca.headHeight - ca.footHeight) + "px"});
        var b9 = ci.body = cm.createElement("div");
        if (ca.idCellWidth > 0) {
            var cg = ci.listId = cm.createElement("div");
            ai(cg.style, {position:al[84],width:ca.idCellWidth + "px",overflow:al[81]});
            b9.appendChild(cg)
        }
        if (ck > 0) {
            var ch = ci.listBody = cm.createElement("div");
            ai(ch.style, {position:al[84],left:ca.idCellWidth + "px",overflow:al[81],borderLeft:al[72] + ca.borderColor,backgroundColor:al[64]});
            b9.appendChild(ch)
        }
        if (cc > 0) {
            var ce = ci.mapBody = cm.createElement("div");
            bR(ce);
            if (ca.setContextMenu) {
                ca.setContextMenu(ce, function(co) {
                    co.type = "chart";
                    return true
                })
            }
            ai(ce.style, {position:al[84],overflow:al[81]});
            b9.appendChild(ce)
        }
        cj.appendChild(b9);
        b8.appendChild(cj);
        if (ca.footHeight > 0) {
            var cf = ci.foot = cm.createElement("div");
            ai(cf.style, {position:al[84],zIndex:100,left:"0px",bottom:"0px",width:al[69],height:ca.footHeight + "px",backgroundColor:ca.bottomBgColor});
            if (ck > 0) {
                var cn = ci.listFoot = cm.createElement("div");
                ai(cn.style, {position:al[84],left:"0px",height:al[69],bottom:"0px",fontSize:"0px",overflow:al[81]});
                cf.appendChild(cn)
            }
            if (cc > 0) {
                var cl = ci.mapFoot = cm.createElement("div");
                ai(cl.style, {position:al[84],height:al[69],bottom:"0px",fontSize:"0px",overflow:al[81]});
                cf.appendChild(cl)
            }
            b8.appendChild(cf)
        }
        return true
    },onColumnResize:function() {
        var cd = this.spaceWidth,ca = 0,cb = this.panels,b8 = this.gantt,ce = b8.idCellWidth,cc;
        var b7 = this.listHidden ? al[47] : "";
        if (cb.listHead) {
            cb.listHead.style.display = b7
        }
        if (cb.listBody) {
            cb.listBody.style.display = b7
        }
        if (cb.listFoot) {
            cb.listFoot.style.display = b7
        }
        var cf = this.mapHidden ? al[47] : "";
        if (cb.mapHead) {
            cb.mapHead.style.display = cf
        }
        if (cb.mapBody) {
            cb.mapBody.style.display = cf
        }
        if (cb.mapFoot) {
            cb.mapFoot.style.display = cf
        }
        if (!cb.listBody || !cb.mapBody) {
            cd = 0
        }
        if (!cb.listBody || this.listHidden) {
            cc = 0
        } else {
            if (!cb.mapBody || this.mapHidden) {
                cc = cb.bodyScroll.clientWidth - ce - cd
            } else {
                cc = b8.listWidth * 1;
                cc = Math.max(cc, 10)
            }
        }
        var b9 = cb.bodyScroll.clientWidth - cc - ce - cd;
        if (cb.mapBody && b9 - ca < 10) {
            cc += b9 - ca - 10;
            b9 = 10 + ca
        }
        if (!this.listHidden) {
            if (cb.listBody) {
                cb.listBody.style.width = cc + "px"
            }
            if (cb.listHead) {
                cb.listHead.style.width = cc + "px"
            }
            if (cb.listFoot) {
                cb.listFoot.style.width = cc + ce + "px"
            }
        }
        if (!this.mapHidden) {
            if (cb.mapHead) {
                cb.mapHead.style.left = ce + cc + cd + "px"
            }
            if (cb.mapHead) {
                cb.mapHead.style.width = b9 - ca + "px"
            }
            if (cb.mapBody) {
                cb.mapBody.style.left = cc + cd + ce + "px"
            }
            if (cb.mapBody) {
                cb.mapBody.style.width = b9 - ca + "px"
            }
            if (cb.mapFoot) {
                cb.mapFoot.style.left = cc + cd + ce + "px"
            }
            if (cb.mapFoot) {
                cb.mapFoot.style.width = b9 - ca + "px"
            }
        }
        b0(b8, al[74])
    },onGanttResize:function(b8) {
        var b7 = this.gantt;
        this.panels.bodyScroll.style.height = (b8[1] - b7.headHeight - b7.footHeight) + "px";
        this.onColumnResize()
    },collapseList:function() {
        if (!this.listHidden && this.mapHidden) {
            this.collapseChart()
        }
        this.listHidden = !this.listHidden;
        this.onColumnResize()
    },collapseChart:function() {
        if (!this.mapHidden && this.listHidden) {
            this.collapseList()
        }
        this.mapHidden = !this.mapHidden;
        this.onColumnResize()
    },isListShow:function() {
        return !this.listHidden
    },isChartShow:function() {
        return !this.mapHidden
    },setListWidth:function(b8) {
        var b7 = this.gantt;
        b8 = Math.max(b8, 0);
        b8 = Math.min(b8, this.panels.bodyScroll.clientWidth - b7.idCellWidth - 10);
        b7.listWidth = b8;
        this.onColumnResize()
    },onHeightChange:function(b9) {
        var b8 = this.panels,b7 = (b9 + 64) + "px";
        if (b8.mapBody) {
            b8.mapBody.style.height = b7
        } else {
            if (b8.body) {
                b8.body.style.height = b7
            }
        }
    },remove:function() {
        var b7 = this.gantt;
        delete b7.getLayout;
        delete b7.collapseMap;
        delete b7.collapseList;
        delete b7.isListShow;
        delete b7.isChartShow;
        delete b7.setListWidth;
        var b8 = this.panels;
        for (var b9 in b8) {
            h(b8[b9])
        }
        this.panels = {};
        J.prototype.remove.apply(this, arguments)
    }});
    function F() {
    }

    F.prototype = new J();
    ai(F.prototype, {initialize:function(b8) {
        if (b8.disableLinksMap || !b8.getMapPanel) {
            return false
        }
        br(this, b8.config.getConfigObj("SFGanttLinksMap"));
        ai(this, {gantt:b8,taskHeight:12,arrayPadding:10,linkStyles:b8.config.getConfigObj("SFGantt/linkStyle")});
        this.taskPadding = b8.itemHeight - this.taskHeight;
        var b7 = this.div = b8.container.ownerDocument.createElement("div");
        ai(b7.style, {position:al[84],fontSize:"0px",top:"-1px",left:"0px",zIndex:200});
        b8.getMapPanel().appendChild(b7);
        this.linkNoticeFields = this.linkNoticeFields ? aK(this.linkNoticeFields.split(",")) : null;
        this.listeners = [i(b8, al[80], this, this.onInit),i(b8, al[73], this, this.onScale),i(b8, al[46], this, this.drawLinks),i(b8, al[45], this, this.clearLinks),i(b8, al[44], this, this.updateLinks),i(b7, al[63], this, this.onLinkClick),i(b7, al[62], this, this.onLinkDblClick)];
        if (this.linkNoticeFields && b8.setTooltip) {
            b8.setTooltip(b7, u(this, this.getTooltip))
        }
        return true
    },onInit:function() {
        var b7 = this.listeners,b8 = this.gantt.getData();
        b7.concat([i(b8, al[142], this, this.drawLink),i(b8, al[141], this, this.clearLink),i(b8, al[86], this, this.updateLink),i(b8, al[87], this, this.onScale),i(b8, al[89], this, this.onScale)]);
        this.drawTaskLinks()
    },onScale:function() {
        var b8 = this.gantt.getViewElements();
        if (!b8) {
            return
        }
        for (var b7 = 0; b7 < b8.length; b7++) {
            this.clearLinks(b8[b7], 0)
        }
        if (!this.refreshTimeout) {
            this.refreshTimeout = window.setInterval(u(this, this.onTime), 100)
        }
        this.changed = true;
        this.idleTimes = 0
    },onTime:function() {
        if (!this.changed) {
            this.idleTimes++;
            if (this.idleTimes > 4) {
                window.clearInterval(this.refreshTimeout);
                delete this.refreshTimeout;
                this.refresh()
            }
            return
        }
        this.changed = false
    },refresh:function() {
        var b8 = this.gantt.getViewElements();
        if (!b8) {
            return
        }
        if (this.refreshTimeout) {
            window.clearTimeout(this.refreshTimeout)
        }
        this.refreshTimeout = null;
        for (var b7 = 0; b7 < b8.length; b7++) {
            this.drawLinks(b8[b7], b7)
        }
    },drawTaskLinks:function() {
        var b8 = this.gantt.getViewElements();
        for (var b7 = 0;
             b7 < b8.length; b7++) {
            this.drawLinks(b8[b7], b7)
        }
    },drawLinks:function(b8, b9) {
        var b7 = b8.getPredecessorLinks();
        for (var ca = 0; ca < b7.length; ca++) {
            this.drawLink(b7[ca], true)
        }
        var b7 = b8.getSuccessorLinks();
        for (var ca = 0; ca < b7.length; ca++) {
            this.drawLink(b7[ca], false)
        }
    },clearLinks:function(b9, ca, b7) {
        if (b7) {
            this.refresh();
            return
        }
        var b8 = b9.getPredecessorLinks();
        for (var cb = 0; cb < b8.length; cb++) {
            this.clearLink(b8[cb])
        }
        var b8 = b9.getSuccessorLinks();
        for (var cb = 0; cb < b8.length; cb++) {
            this.clearLink(b8[cb])
        }
    },updateLinks:function(b7, cc) {
        var b9 = false,ca = false;
        for (var b8 = 0; b8 < cc.length; b8++) {
            var cb = cc[b8];
            if (cb == al[113] || cb == al[114]) {
                b9 = true;
                break
            }
            if (!ca && (cb == al[127] || cb == al[128] || cb == al[113] || cb == al[114])) {
                ca = true
            }
        }
        if (b9) {
            this.onScale()
        } else {
            if (ca) {
                this.clearLinks(b7, 0);
                this.drawLinks(b7)
            }
        }
    },updateLink:function(b7) {
        if (this.gantt.getElementDrawObj(b7)) {
            this.clearLink(b7);
            this.drawLink(b7)
        }
    },drawLink:function(cg) {
        if (this.refreshTimeout) {
            return
        }
        var cq = this.gantt,cc = cg.PredecessorTask,co = cg.SuccessorTask,cu = cq.getScale();
        if (cq.getElementDrawObj(cg).linkImg) {
            return
        }
        if (!cu || cc.isHidden() || co.isHidden()) {
            return
        }
        var ch = cq.getElementDrawObj(cg);
        if (!cc.Start || !cc.Finish || !co.Start || !co.Finish) {
            return
        }
        var cf = [cq.getMapPanelPosition(cc.Start),cq.getElementViewTop(cc) + 2];
        var ca = [cq.getMapPanelPosition(co.Start),cq.getElementViewTop(co) + 2];
        var b7 = (cc.Finish - cc.Start) / cu;
        var cd = (co.Finish - co.Start) / cu;
        var ck = [9,5],cs = cq.imgPath + "arrow_blue_$D" + cq.imgType;
        var cl,cn = [],ct = {},b9 = {borderStyle:al[43],borderColor:"blue"};
        var b8 = cg.ClassName;
        b8 = b8 ? b8 : this.linkStyle;
        var cr = this.linkStyles[b8];
        if (cr) {
            if (cr.arrayImage) {
                cs = cr.arrayImage
            }
            if (cr.lineStyle) {
                b9 = cr.lineStyle
            }
        }
        switch (cg.Type) {case 0:cl = al[82];var cb = cf[0] + b7;var cp = cf[1] + Math.ceil((this.taskHeight + this.taskPadding) / 2);var cj = ca[0] + cd;var cm = ca[1] + Math.ceil((this.taskHeight + this.taskPadding) / 2);var ce = Math.max(cb, cj) + this.arrayPadding;cn.push([cb,cp]);cn.push([ce,cp]);cn.push([ce,cm]);cn.push([cj,cm]);ai(ct, {left:cj + "px",top:cm - Math.floor(ck[0] / 2) + "px",width:ck[1] + "px",height:ck[0] + "px"});break;case 2:cl = al[82];var cb = cf[0];var cp = cf[1] + Math.ceil((this.taskHeight + this.taskPadding) / 2);
            var cj = ca[0] + cd + ck[1];var cm = ca[1] + Math.ceil((this.taskHeight + this.taskPadding) / 2);cn.push([cb,cp]);cn.push([cb - this.arrayPadding,cp]);cn.push([cb - this.arrayPadding,ca[1]]);cn.push([ca[0] + cd + this.arrayPadding,ca[1]]);cn.push([ca[0] + cd + this.arrayPadding,cm]);cn.push([cj,cm]);ai(ct, {left:cj - ck[1] + "px",top:cm - Math.floor(ck[0] / 2) + "px",width:ck[1] + "px",height:ck[0] + "px"});break;case 3:cl = al[66];var cb = cf[0];var cp = cf[1] + Math.ceil((this.taskHeight + this.taskPadding) / 2);var cj = ca[0];var cm = ca[1] + Math.ceil((this.taskHeight + this.taskPadding) / 2);
            var ce = Math.min(cb, cj) - this.arrayPadding;cn.push([cb,cp]);cn.push([ce,cp]);cn.push([ce,cm]);cn.push([cj,cm]);ai(ct, {left:cj - ck[1] + "px",top:cm - Math.floor(ck[0] / 2) + "px",width:ck[1] + "px",height:ck[0] + "px"});break;case 1:default:var cb = cf[0] + b7;var cp = cf[1] + Math.ceil((this.taskHeight + this.taskPadding) / 2);if (cc.Finish <= co.Start) {
            cl = cf[1] > ca[1] ? "up" : "down";
            var cj = ca[0];
            if (cc.Finish.valueOf() == cc.Start.valueOf()) {
                cp -= 3
            }
            var cm = cf[1] > ca[1] ? (ca[1] + this.taskPadding / 2 + this.taskHeight) : (ca[1] + this.taskPadding / 2 - ck[1]);
            if (co.Finish.valueOf() - co.Start.valueOf() == 0) {
                cm -= 3
            }
            if (co.Finish.valueOf() - co.Start.valueOf() != 0 && cc.Finish.valueOf() != cc.Start.valueOf()) {
                cj = Math.max(cj, cb + 5)
            }
            cn.push([cb,cp]);
            cn.push([cj,cp]);
            cn.push([cj,cm]);
            ai(ct, {left:(cj - Math.floor(ck[0] / 2) - 1) + "px",top:cm + "px",width:ck[0] + "px",height:ck[1] + "px"})
        } else {
            cl = al[66];
            var cj = ca[0] - ck[1];
            var cm = ca[1] + (this.taskPadding + this.taskHeight) / 2;
            cn.push([cb,cp]);
            cn.push([cb + this.arrayPadding,cp]);
            cn.push([cb + this.arrayPadding,ca[1]]);
            cn.push([ca[0] - this.arrayPadding,ca[1]]);
            cn.push([ca[0] - this.arrayPadding,cm]);
            cn.push([cj,cm]);
            ai(ct, {left:(cj) + "px",top:cm - Math.floor(ck[0] / 2) + "px",width:ck[1] + "px",height:ck[0] + "px"})
        }break
        }
        ch.linkPaths = this.getLinkPaths(cn, b9, cg);
        var ci = this.div.ownerDocument.createElement("img");
        bq(ci, cs.replace("$D", cl));
        ai(ci.style, ct);
        ai(ci.style, {position:al[84],fontSize:"0px"});
        ch.linkImg = ci;
        ci._link = cg;
        this.div.appendChild(ci)
    },getLinkPaths:function(b9, b8, ca) {
        var cc = [],cb = this.gantt.container.ownerDocument;
        for (var b7 = 1; b7 < b9.length; b7++) {
            var cd = cb.createElement("div");
            ai(cd.style, b8);
            ai(cd.style, {position:al[84],fontSize:"0px",borderWidth:"0px"});
            if (b9[b7 - 1][0] == b9[b7][0]) {
                ai(cd.style, {borderRightWidth:"1px",height:Math.abs(b9[b7][1] - b9[b7 - 1][1]) + "px",width:0 + "px",left:(b9[b7][0] - 1) + "px",top:(Math.min(b9[b7][1], b9[b7 - 1][1])) + "px"})
            } else {
                if (b9[b7 - 1][1] == b9[b7][1]) {
                    ai(cd.style, {borderTopWidth:"1px",width:Math.abs(b9[b7][0] - b9[b7 - 1][0]) + "px",height:0 + "px",left:(Math.min(b9[b7][0], b9[b7 - 1][0])) + "px",top:(b9[b7][1]) + "px"})
                }
            }
            this.div.appendChild(cd);
            cd.aaa = "bbb";
            cd._link = ca;
            cc.push(cd)
        }
        return cc
    },clearLink:function(b8) {
        var b7 = this.gantt.getElementDrawObj(b8);
        if (!b7) {
            return
        }
        if (b7.linkImg) {
            h(b7.linkImg);
            b7.linkImg._link = null;
            b7.linkImg = null
        }
        if (b7.linkPaths) {
            var b9;
            while (b9 = b7.linkPaths.pop()) {
                b9._link = null;
                h(b9)
            }
            b7.linkPaths = null
        }
        this.gantt.removeElementDrawObj(b8)
    },onLinkClick:function(b8) {
        var b7 = b8.target._link;
        if (!b7) {
            return
        }
        b0(this.gantt, "linkclick", [b7])
    },onLinkDblClick:function(b8) {
        var b7 = b8.target._link;
        if (!b7) {
            return
        }
        k(b8);
        b0(this.gantt, "linkdblclick", [b7])
    },getTooltip:function(cb, cd) {
        var ca = cd.target._link,cc = this.gantt.container.ownerDocument;
        if (!ca) {
            return
        }
        if (cb.bindObject == ca) {
            return false
        }
        var b9 = cc.createElement(al[65]);
        b9.style.fontSize = "12px";
        var ce = b9.insertRow(-1);
        var b7 = ce.insertCell(-1);
        ai(b7, {align:al[71],colSpan:2,noWrap:true});
        b7.appendChild(cc.createTextNode(this.tooltipTitle.link));
        for (var b8 = 0; b8 < this.linkNoticeFields.length; b8++) {
            ce = b9.insertRow(-1);
            b7 = ce.insertCell(-1);
            ai(b7, {align:al[82],noWrap:true});
            this.linkNoticeFields[b8].showHead(b7);
            b7 = ce.insertCell(-1);
            ai(b7, {align:al[82],noWrap:true});
            this.linkNoticeFields[b8].showBody(b7, ca, this)
        }
        cb.bindObject = ca;
        cb.setContent(b9);
        return true
    },remove:function() {
        if (this.refreshTimeout) {
            window.clearInterval(this.refreshTimeout)
        }
        J.prototype.remove.apply(this, arguments)
    },depose:function() {
        if (this.delayTimeout) {
            window.clearTimeout(this.delayTimeout)
        }
        h(this.div);
        b2(this);
        for (var b7 in this) {
            this[b7] = null
        }
    }});
    function aC() {
    }

    aC.prototype = new J();
    ai(aC.prototype, {initialize:function(b8, b7) {
        if (b8.disableListScrollNotice || !b8.getLayout) {
            return false
        }
        br(this, b8.config.getConfigObj("SFGanttListScrollNotice"));
        this.taskFields = this.taskFields ? aL(this.taskFields.split(",")) : null;
        this.gantt = b8;
        var b9 = this.div = b7.ownerDocument.createElement("div");
        ai(b9.style, {position:al[84],zIndex:400,display:al[47]});
        ai(b9.style, this.divStyle);
        b7.appendChild(b9);
        this.listeners = [i(b8, al[51], this, this.onScroll),i(b8, al[78], this, this.onResize)];
        this.onResize();
        return true
    },onScroll:function(b8, b7) {
        if (!b7 || !b7.spanElements[1]) {
            return
        }
        if (!this.timeout) {
            this.timeout = window.setInterval(u(this, this.onTime), 64)
        }
        this.scrollObj = b7;
        this.changed = true;
        this.idleTimes = 0
    },onTime:function() {
        if (!this.changed) {
            this.idleTimes++;
            if (this.idleTimes > 16) {
                this.div.style.display = al[47];
                window.clearInterval(this.timeout);
                delete this.timeout
            }
            return
        }
        this.changed = false;
        var b8 = this.scrollObj.spanElements[1],cd = this.taskFields.length,cb = this.div.ownerDocument;
        if (!this.div.firstChild) {
            var ca = cb.createElement(al[65]);
            this.div.appendChild(ca);
            ca.width = 160;
            ca.style.fontSize = "12px";
            for (var b9 = 0; b9 < cd; b9++) {
                var cc = ca.insertRow(-1);
                var b7 = cc.insertCell(-1);
                b7.width = 60;
                this.taskFields[b9].showHead(b7, this);
                var b7 = cc.insertCell(-1);
                if (b9 == 0) {
                    b7.width = 100
                }
                var ce = cb.createElement("div");
                ai(ce.style, {position:al[83],overflow:al[81],width:"100px",height:"14px"});
                b7.appendChild(ce)
            }
        }
        for (var b9 = 0; b9 < cd; b9++) {
            var ce = this.div.firstChild.rows[b9].cells[1].firstChild;
            h(ce, true);
            this.taskFields[b9].showBody(ce, b8, this)
        }
        this.div.style.display = ""
    },onResize:function() {
        ai(this.div.style, {right:"30px",top:(this.gantt.headHeight + 10) + "px"})
    }});
    function bL() {
    }

    bL.prototype = new J();
    ai(bL.prototype, {initialize:function(b8) {
        var b7;
        if (!b8.getLayout || !(b7 = b8.getLayout("head"))) {
            return false
        }
        this.gantt = b8;
        var b9 = this.div = doc = b7.ownerDocument.createElement("img");
        ai(b9, {border:"0"});
        ai(b9.style, {position:al[84],width:b8.idCellWidth + "px",height:b8.headHeight + "px"});
        bq(b9, b8.imgPath + "logo" + b8.imgType);
        if (b8.setTooltip) {
            b8.setTooltip(b9, u(this, this.getLogoTooltip))
        }
        b7.appendChild(b9);
        if (b8.setContextMenu) {
            b8.setContextMenu(b9, function(ca) {
                ca.type = "logo";
                return true
            })
        }
        return true
    },getLogoTooltip:function(b7) {
        if (b7 && b7.bindObject == this) {
            return false
        }
        var b8 = this.div.ownerDocument.createElement("div");
        b8.innerHTML = aj("7xm1w2r4_iMRBlTFxdWowBF4B2QgCgzd");
        b7.setContent(b8);
        b7.bindObject = this;
        return true
    }});
    function bG() {
        this.contextMenuItems = []
    }

    bG.prototype = new J();
    ai(bG.prototype, {initialize:function(b8) {
        if (b8.disableContextMenu) {
            return false
        }
        br(this, b8.config.getConfigObj("SFMenu"));
        this.gantt = b8;
        var b7 = this.container = b8.getContainer(),ca = b8.container.ownerDocument;
        var b9 = this.div = ca.createElement(al[65]);
        ai(b9, {cellSpacing:0,border:0,cellPadding:0});
        ai(b9.style, {position:al[84],zIndex:700});
        ai(b9.style, this.tableStyle);
        ai(b8, {addContextMenuItem:u(this, this.addItem),getContextMenuItemById:u(this, this.getItemById),removeContextMenuItem:u(this, this.removeItem),setContextMenu:u(this, this.setContextMenu)});
        this.listeners = [e(b7, al[42], k),i(b7, al[152], this, this.onMouseDown),i(b9, al[151], this, this.onItemMouseOver),i(b9, al[152], this, this.onItemClick),i(ca, al[152], this, this.hidden)];
        return true
    },setContextMenu:function(b8, b7) {
        if (!b8._SF_E_) {
            b8._SF_E_ = []
        }
        b8._SF_E_.contextMenu = b7
    },onMouseDown:function(ce) {
        var ca = bT(ce);
        if (ca == 4) {
            j(ce)
        }
        if (ca != 2) {
            return
        }
        var cd = ce.target;
        while (cd) {
            if (cd._SF_E_ && cd._SF_E_.contextMenu && cd._SF_E_.contextMenu(this, ce)) {
                k(ce);
                if (this.items) {
                    this.hidden()
                }
                var b8 = [],cc = this.contextMenuItems;
                for (var b9 = 0; b9 < cc.length; b9++) {
                    var cb = cc[b9].showHandle(this, ce);
                    if (cb == 1) {
                        b8.push(cc[b9])
                    }
                }
                this.items = b8;
                var b7 = bU(ce, this.container);
                this.show(b7);
                return
            }
            cd = cd.parentNode
        }
    },addItem:function(b9, cc, cd, cb, ce, b7) {
        if (ce) {
            for (var b8 = 0; b8 < this.contextMenuItems.length; b8++) {
                if (ce == this.contextMenuItems[b8].id == ce) {
                    return false
                }
            }
        }
        var ca = new ax(b9, cc, cd, cb, ce, b7);
        this.contextMenuItems.push(ca);
        return ca
    },getItemById:function(b8) {
        for (var b7 = 0; b7 < this.contextMenuItems.length; b7++) {
            if (b8 == this.contextMenuItems[b7].id) {
                return this.contextMenuItems[b7]
            }
        }
        return null
    },removeItem:function(b8) {
        if (typeof(b8) == al[159]) {
            b8 = b8.id
        }
        if (b8) {
            for (var b7 = 0; b7 < this.contextMenuItems.length; b7++) {
                if (this.contextMenuItems[b7].id == b8) {
                    return this.contextMenuItems.splice(b7, 1)
                }
            }
        }
        return null
    },show:function(b7) {
        var b8 = this.container,b9 = this.div;
        this.createItemContent();
        b8.appendChild(b9);
        var cb = b7[0] + 1,ca = b7[1] + 1;
        if (cb + b9.offsetWidth > b8.offsetWidth) {
            cb = b7[0] - b9.offsetWidth - 1
        }
        if (ca + b9.offsetHeight > b8.offsetHeight) {
            ca = b7[1] - b9.offsetHeight - 1
        }
        ai(b9.style, {left:cb + "px",top:ca + "px"})
    },hidden:function() {
        this.focusObj = null;
        var b7 = this.items;
        if (b7) {
            for (var b8 = 0; b8 < b7.length; b8++) {
                b7[b8].row = null
            }
            this.items = null
        }
        h(this.div, true);
        if (this.div.parentNode == this.container) {
            this.container.removeChild(this.div)
        }
    },createItemContent:function() {
        this.items.sort(function(ce, cd) {
            if (ce.index == cd.index) {
                return 0
            }
            return ce.index > cd.index ? 1 : -1
        });
        var cb = this.container.ownerDocument;
        for (var b9 = 0; b9 < this.items.length; b9++) {
            var ca = this.items[b9];
            var cc = this.div.insertRow(-1);
            var b7 = cc.insertCell(-1);
            ai(b7, {width:34,height:24,bgColor:"#F6F6F6",align:al[71]});
            if (ca.icon) {
                var b8 = cb.createElement("img");
                bq(b8, ca.icon);
                ai(b8, {border:0,width:16,height:16});
                b7.appendChild(b8)
            }
            b7 = cc.insertCell(-1);
            ai(b7, {noWrap:"true"});
            ai(b7.style, {paddingLeft:"10px",paddingRight:"25px",fontSize:"13px",cursor:al[50]});
            b7.innerHTML = ca.text;
            ca.row = cc
        }
    },getFocusItem:function(ca) {
        if (!this.items) {
            return null
        }
        var b9 = ca.target,cb,b8 = this.div;
        while (b9) {
            if (b9 == b8) {
                break
            }
            if (b9.nodeName == "TR") {
                cb = b9
            }
            b9 = b9.parentNode
        }
        if (!cb) {
            return null
        }
        for (var b7 = b8.rows.length - 1; b7 >= 0; b7--) {
            if (cb == b8.rows[b7]) {
                return this.items[b7]
            }
        }
        return null
    },onItemMouseOver:function(b9) {
        var b8 = this.getFocusItem(b9);
        if (!b8) {
            return
        }
        var b7 = this.focusObj;
        if (b7) {
            b7.row.style.backgroundColor = "";
            b7.row.cells[0].style.backgroundColor = "#F6F6F6"
        }
        this.focusObj = b8;
        b8.row.style.backgroundColor = "#C4E0F2";
        b8.row.cells[0].style.backgroundColor = "#C4E0F2"
    },onItemClick:function(b8) {
        var b7 = this.getFocusItem(b8);
        if (!b7) {
            return
        }
        k(b8);
        this.hidden();
        if (b7.runHandle) {
            b7.runHandle(this)
        }
    },remove:function() {
        this.hidden();
        var b7 = this.gantt;
        delete b7.addContextMenuItem;
        delete b7.getContextMenuItemById;
        delete b7.removeContextMenuItem;
        delete b7.setContextMenu;
        delete this.contextMenuItems;
        J.prototype.remove.apply(this, arguments)
    }});
    function be() {
    }

    be.prototype = new J();
    ai(be.prototype, {initialize:function(b8, b7) {
        if (!b8.addContextMenuItem) {
            return
        }
        var b9 = b8.config.getConfig("SFGantt/menuText");
        b8.addContextMenuItem(function(ca) {
            return(ca.type == "chart" && ca.gantt.zoomIn) ? 1 : 0
        }, function(ca) {
            ca.gantt.zoomIn()
        }, b9.ZoomIn, b8.imgPath + "icon_zoomin" + b8.imgType, "ZoomIn", 551);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == "chart" && ca.gantt.zoomOut) ? 1 : 0
        }, function(ca) {
            ca.gantt.zoomOut()
        }, b9.ZoomOut, b8.imgPath + "icon_zoomout" + b8.imgType, "ZoomOut", 556);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[61] && ca.gantt.focusIntoView && ca.gantt.getFocusElement && ca.gantt.getFocusElement() && ca.gantt.getFocusElement().Start) ? 1 : 0
        }, function(ca) {
            ca.gantt.focusIntoView()
        }, b9.FocusIntoView, b8.imgPath + "icon_taskgoto" + b8.imgType, "FocusIntoView", 601);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[61] && ca.gantt.addTask && !ca.gantt.readOnly && !ca.gantt.disableAddTask) ? 1 : 0
        }, function(ca) {
            ca.gantt.addTask()
        }, b9.AddTask, null, "AddTask", 651);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[61] && ca.gantt.deleteTask && !ca.gantt.readOnly && !ca.gantt.disableDeleteTask && ca.gantt.getFocusElement && ca.gantt.getFocusElement()) ? 1 : 0
        }, function(ca) {
            ca.gantt.deleteTask()
        }, b9.DeleteTask, null, "DeleteTask", 656);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[61] && ca.gantt.addTasksLinks && !ca.gantt.readOnly && !ca.gantt.disableAddLink && ca.gantt.getFocusElement && ca.gantt.getFocusElement()) ? 1 : 0
        }, function(ca) {
            ca.gantt.addTasksLinks()
        }, b9.AddTasksLinks, null, "AddTasksLinks", 701);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[61] && ca.gantt.removeTasksLinks && !ca.gantt.readOnly && !ca.gantt.disableDeleteLink && ca.gantt.getFocusElement && ca.gantt.getFocusElement()) ? 1 : 0
        }, function(ca) {
            ca.gantt.removeTasksLinks()
        }, b9.RemoveTasksLinks, null, "RemoveTasksLinks", 706);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[61] && ca.gantt.upgradeSelectedTasks && !ca.gantt.readOnly && !ca.gantt.disableUpdateTask && ca.gantt.getFocusElement && ca.gantt.getFocusElement()) ? 1 : 0
        }, function(ca) {
            ca.gantt.upgradeSelectedTasks()
        }, b9.UpgradeTask, null, "UpgradeTask", 751);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[61] && ca.gantt.degradeSelectedTasks && !ca.gantt.readOnly && !ca.gantt.disableUpdateTask && ca.gantt.getFocusElement && ca.gantt.getFocusElement()) ? 1 : 0
        }, function(ca) {
            ca.gantt.degradeSelectedTasks()
        }, b9.DegradeTask, null, "DegradeTask", 756);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[67] && ca.gantt.collapseChart && !ca.gantt.isChartShow()) ? 1 : 0
        }, function(ca) {
            ca.gantt.collapseChart()
        }, b9.ShowChart, null, "ShowChart", 801);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[67] && ca.gantt.collapseChart && ca.gantt.isChartShow()) ? 1 : 0
        }, function(ca) {
            ca.gantt.collapseChart()
        }, b9.HideChart, null, "HideChart", 806);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[67] && ca.gantt.collapseList && !ca.gantt.isListShow()) ? 1 : 0
        }, function(ca) {
            ca.gantt.collapseList()
        }, b9.ShowList, null, "ShowList", 850);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == al[67] && ca.gantt.collapseList && ca.gantt.isListShow()) ? 1 : 0
        }, function(ca) {
            ca.gantt.collapseList()
        }, b9.HideList, null, "HideList", 856);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == "logo") ? 1 : 0
        }, function(ca) {
            window.open(aj("ef_aTS_EGQjTle3iE5BYP9sRk91KkKKIUAW7XNsWDbu4WgkR"))
        }, b9.Help, null, "Help", 901);
        b8.addContextMenuItem(function(ca) {
            return(ca.type == "logo") ? 1 : 0
        }, function(ca) {
            window.open(aj("ef_aTS_EGQjTle3iE5BYP9sRk91KkKKIUAW7XNsWDV"))
        }, b9.About, null, "About", 951);
        return true
    }});
    function bK() {
    }

    bK.prototype = new J();
    ai(bK.prototype, {initialize:function(b7) {
        this.gantt = b7;
        b7.print = u(this, this.print);
        return true
    },print:function() {
        var cd = window.open("about:blank");
        var cc = cd.document;
        var ca = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n';
        ca += "<html>";
        ca += aj("TeFLPldTKf5BlyFNSsBjTrkSjETQmLB1LQ0KZswQVnCpZwlHNLsCiipajDcPL2kYSnr7DGI7TmXEAW1EPWgPdv,jQFVHHMKOQP4bHsBYUvgSWSLtaeSDYhJYHdsLVr84K6URfvAAgvo");
        ca += '<body><div id="div_gantt"></div></body></html>';
        cc.writeln(ca);
        cc.close();
        var b7 = cc.body,b8 = this.gantt,ce = cc.getElementById("div_gantt");
        ai(cc.body.style, {margin:"0px"});
        ai(ce.style, {width:"800px",height:"600px"});
        var b9 = new aq();
        bx(b9, b8.config, true);
        b9.setConfig("SFGantt/container", ce);
        b9.setConfig("SFGantt/readOnly", true);
        b9.setConfig("SFGantt/footHeight", 0);
        b9.setConfig("SFGantt/disableTooltip", true);
        b9.setConfig("SFGantt/disableHelpLink", true);
        b9.setConfig("SFGantt/disableTimeScrollNotice", true);
        b9.setConfig("SFGantt/disableDragResize", true);
        b9.setConfig("SFGantt/disableCursor", true);
        b9.setConfig("SFGantt/disableContextMenu", true);
        b9.setConfig("SFGantt/disableScroll", true);
        b9.setConfig("SFGantt/disableSelect", true);
        var cb = new ao(b9, b8.data);
        cb.showMap(b8.getStartTime(), b8.getZoomScale(b8.getScale()));
        cb.setScale(b8.getScale())
    }});
    function bu() {
    }

    bu.prototype = new J();
    ai(bu.prototype, {initialize:function(b8) {
        this.gantt = b8;
        if (b8.disableScroll || !b8.getLayout || !b8.showScroller) {
            return false
        }
        var b7 = b8.getLayout(al[41]);
        b7.style.overflowY = al[51];
        if (!b7) {
            return false
        }
        this.listeners = [i(b7, al[51], this, this.onScroll)];
        return true
    },onScroll:function(b8) {
        k(b8);
        if (!this.timeout) {
            this.timeout = window.setInterval(u(this, this.onTime), 128)
        }
        var b7 = this.scrollObj ? this.scrollObj : this.getScrollObj();
        b7.scrollTop = this.gantt.getLayout(al[41]).scrollTop;
        b7.changed = true;
        b7.idleTimes = 0
    },onTime:function(ca) {
        var b9 = this.scrollObj,b7 = this.gantt;
        if (!b9 || !b9.changed) {
            if (b9) {
                b9.idleTimes++;
                if (b9.idleTimes > 8) {
                    window.clearInterval(this.timeout);
                    delete this.timeout
                }
            }
            return
        }
        b9.changed = false;
        if (b7.getTooltip) {
            b7.getTooltip().hidden()
        }
        var b8 = b9.scrollTop;
        this.updateScroll(b9, 1, b8);
        this.updateScroll(b9, 3, b8 + this.gantt.getLayout(al[41]).clientHeight * 1.5);
        b0(this.gantt, al[51], [b8,b9])
    },updateScroll:function(cc, b9, cb) {
        var b7 = this.gantt,ca = cc.spanElements[b9];
        var ce = cb - cc.spanHeights[b9];
        var b8 = ce > 0;
        while (ca) {
            if (b8) {
                if (ce < b7.getElementHeight(ca)) {
                    break
                }
                var cd = ca.getNextView();
                if (!cd) {
                    break
                }
                b7.getElementDrawObj(cd);
                ca = cd;
                ce -= b7.getElementHeight(ca)
            } else {
                if (ce > 0) {
                    break
                }
                var cd = ca.getPreviousView();
                if (!cd) {
                    break
                }
                b7.getElementDrawObj(cd);
                ca = cd;
                ce += b7.getElementHeight(cd)
            }
        }
        cc.spanHeights[b9] = cb - ce;
        cc.spanElements[b9] = ca
    },getScrollObj:function() {
        var b8 = this.gantt,b9 = b8.getViewElements()[0],b7 = b8.getViewTop();
        return this.scrollObj = {lastTime:new Date().valueOf(),spanElements:[b9,b9,b9,b9],spanHeights:[b7,b7,b7,b7]}
    }});
    function O() {
    }

    O.prototype = new J();
    ai(O.prototype, {initialize:function(cd, ca) {
        if (!this.layoutName || !cd.getLayout) {
            return false
        }
        var ca = cd.getLayout(this.layoutName);
        if (!ca) {
            return false
        }
        bR(ca);
        var ch = ca.ownerDocument,b9 = ch.createElement("div");
        ai(b9.style, {position:al[84]});
        bq(b9, cd.imgPath + "scroll_space" + cd.imgType);
        var b7 = ch.createElement("img");
        ai(b7.style, {position:al[84],left:"0px",border:"0px"});
        bq(b7, cd.imgPath + al[40] + cd.imgType);
        b9.appendChild(b7);
        var ce = ch.createElement("img");
        ai(ce.style, {position:al[84],right:"0px",border:"0px"});
        bq(ce, cd.imgPath + al[39] + cd.imgType);
        b9.appendChild(ce);
        var b8 = ch.createElement("div");
        ai(b8.style, {position:al[84]});
        var cc = ch.createElement("img");
        ai(cc.style, {position:al[84],left:"0px",border:"0px"});
        bq(cc, cd.imgPath + al[38] + cd.imgType);
        b8.appendChild(cc);
        var cf = ch.createElement("img");
        ai(cf.style, {position:al[84],right:"0px",border:"0px"});
        bq(cf, cd.imgPath + al[37] + cd.imgType);
        b8.appendChild(cf);
        var cg = ch.createElement("div");
        ai(cg.style, {position:al[84],left:"3px",textAlign:al[71]});
        bq(cg, cd.imgPath + al[36] + cd.imgType);
        var cb = ch.createElement("img");
        ai(cb.style, {border:"0px"});
        bq(cb, cd.imgPath + al[35] + cd.imgType);
        cg.appendChild(cb);
        b8.appendChild(cg);
        b9.appendChild(b8);
        ca.appendChild(b9);
        ai(this, {gantt:cd,container:ca,div:b9,leftImg:b7,rightImg:ce,barDiv:b8,barLeftImg:cc,barRightImg:cf,barCenterDiv:cg,barCenterImg:cb});
        this.listeners = [i(b9, al[152], this, this.onMouseDown),i(cd, al[74], this, this.onResize)];
        this.scrollLeft = 0;
        return true
    },onResize:function() {
        if (!this.container) {
            return
        }
        var b8 = this.container,ca = b8.offsetWidth,b7 = b8.offsetHeight,b9 = this.size;
        if (b9 && b9[1] == b7 && b9[0] == ca) {
            return
        }
        if (ca <= 0) {
            this.div.style.display = al[47];
            return
        } else {
            this.div.style.display = ""
        }
        x(this.div, [ca,b7]);
        x(this.barDiv, [ca - b7 * 2,b7]);
        x(this.barCenterDiv, [Math.max(0, ca - b7 * 2 - 6),b7]);
        if (!b9 || b9[1] != b7) {
            x(this.leftImg, [b7,b7]);
            x(this.rightImg, [b7,b7]);
            x(this.barLeftImg, [3,b7]);
            x(this.barRightImg, [3,b7]);
            x(this.barCenterImg, [8,b7])
        }
        this.size = [ca,b7];
        this.init(this.offsetWidth, this.scrollWidth, this.scrollLeft)
    },init:function(ca, b8, cb) {
        if (!ca || !b8) {
            return
        }
        var b9 = this.size[0] - this.size[1] * 2;
        this.offsetWidth = ca;
        this.scrollWidth = b8;
        this.barDiv.style.display = ca < b8 ? "" : al[47];
        var b7 = Math.max(b8 ? parseInt(b9 * ca / b8) : 0, 14);
        ai(this.barDiv.style, {width:b7 + "px"});
        ai(this.barCenterDiv.style, {width:b7 - 6 + "px"});
        this.width = b9 - b7;
        this.scrollTo(cb ? cb : this.scrollLeft, false)
    },scrollTo:function(b8, b7) {
        b8 = this.scrollLeft = Math.max(Math.min(b8, this.scrollWidth - this.offsetWidth), 0);
        ai(this.barDiv.style, {left:(this.size[1] + b8 / (this.scrollWidth - this.offsetWidth) * this.width) + "px"});
        if (b7 != false) {
            b0(this, al[51], [b8])
        }
    },onMouseDown:function(cd) {
        k(cd);
        if (this.pressObj || this.spaceObj) {
            this.onMouseUp(cd)
        }
        var ca = this.gantt,b7 = this.div,cf = ca.imgPath,cb = ca.imgType,ch = b7.ownerDocument;
        if (b7.setCapture) {
            b7.setCapture()
        }
        switch (cd.target) {case this.leftImg:case this.rightImg:var ce = (this.rightImg == cd.target);bq(cd.target, cf + "scroll_" + (ce ? al[66] : al[82]) + "1" + cb);var b8 = this.pressObj = {dir:(ce ? 1 : -1),timeout:window.setInterval(u(this, this.onButtonPress), 32),ul:i(ch, al[150], this, this.onMouseUp)};
            b0(this, al[34], [this.scrollLeft]);this.onButtonPress();break;case this.div:var cg = bW(cd, this.div);var cc = cg[0] / (this.size[0] - this.size[1] * 2) * (this.scrollWidth - this.offsetWidth);var b9 = this.spaceObj = {toLeft:cc,timeout:window.setInterval(u(this, this.onSpacePress), 128),ul:i(ch, al[150], this, this.onMouseUp)};b0(this, al[34], [this.scrollLeft]);this.onSpacePress();break;default:new q(b7, u(this, this.onBarMove), {interval:32}).onMouseDown(cd);break
        }
    },onMouseUp:function(ca) {
        k(ca);
        if (ca && ca.target && ca.target.ownerDocument.releaseCapture) {
            ca.target.ownerDocument.releaseCapture()
        }
        var b8 = this.gantt,cb = b8.imgPath,b9 = b8.imgType;
        if (this.pressObj) {
            var b7 = this.pressObj;
            b0(this, al[33], [this.scrollLeft]);
            window.clearInterval(b7.timeout);
            c(b7.ul);
            bq(this.leftImg, b8.imgPath + al[40] + b8.imgType);
            bq(this.rightImg, b8.imgPath + al[39] + b8.imgType);
            this.pressObj = null
        }
        if (this.spaceObj) {
            var cc = this.spaceObj;
            b0(this, al[33], [this.scrollLeft]);
            this.scrollTo(cc.toLeft);
            window.clearInterval(cc.timeout);
            c(cc.ul);
            this.spaceObj = null
        }
    },onButtonPress:function() {
        if (!this.pressObj) {
            return
        }
        this.scrollTo(this.scrollLeft + this.pressObj.dir * 8)
    },onSpacePress:function() {
        if (!this.spaceObj) {
            return
        }
        var ca = this.spaceObj,b8 = ca.toLeft,b7 = this.scrollLeft;
        var b9 = ca.toLeft - this.scrollLeft;
        if (Math.abs(b9) < 64) {
            this.onMouseUp();
            return
        }
        this.scrollTo(this.scrollLeft + (b9 > 0 ? 64 : -64))
    },onBarMove:function(cb, b8, b9) {
        var b7 = this.gantt,cc = b7.imgPath,ca = b7.imgType;
        if (b9 == al[149]) {
            bq(this.barLeftImg, cc + al[32] + ca);
            bq(this.barCenterImg, cc + al[31] + ca);
            bq(this.barRightImg, cc + al[30] + ca);
            bq(this.barCenterDiv, cc + al[29] + ca);
            b0(this, al[34], [this.startDragLeft = this.scrollLeft]);
            return
        }
        this.scrollTo(this.startDragLeft + (b8[0] - cb[0]) / this.width * (this.scrollWidth - this.offsetWidth));
        if (b9 == "end") {
            bq(this.barLeftImg, cc + al[38] + ca);
            bq(this.barCenterImg, cc + al[35] + ca);
            bq(this.barRightImg, cc + al[37] + ca);
            bq(this.barCenterDiv, cc + al[36] + ca);
            b0(this, al[33], [this.scrollLeft])
        }
    },remove:function(b7) {
        delete this.leftImg;
        delete this.rightImg;
        delete this.barDiv;
        delete this.barLeftImg;
        delete this.barRightImg;
        delete this.barCenterDiv;
        delete this.barCenterImg;
        J.prototype.remove.apply(this, arguments)
    }});
    function b3(b7) {
        this.layoutName = "listFoot"
    }

    b3.prototype = new J();
    ai(b3.prototype, {remove:function(b7) {
        delete this.leftImg;
        delete this.rightImg;
        delete this.barDiv;
        delete this.barLeftImg;
        delete this.barRightImg;
        delete this.barCenterDiv;
        delete this.barCenterImg;
        J.prototype.remove.apply(this, arguments)
    },onBarMove:function(cb, b8, b9) {
        var b7 = this.gantt,cc = b7.imgPath,ca = b7.imgType;
        if (b9 == al[149]) {
            bq(this.barLeftImg, cc + al[32] + ca);
            bq(this.barCenterImg, cc + al[31] + ca);
            bq(this.barRightImg, cc + al[30] + ca);
            bq(this.barCenterDiv, cc + al[29] + ca);
            b0(this, al[34], [this.startDragLeft = this.scrollLeft]);
            return
        }
        this.scrollTo(this.startDragLeft + (b8[0] - cb[0]) / this.width * (this.scrollWidth - this.offsetWidth));
        if (b9 == "end") {
            bq(this.barLeftImg, cc + al[38] + ca);
            bq(this.barCenterImg, cc + al[35] + ca);
            bq(this.barRightImg, cc + al[37] + ca);
            bq(this.barCenterDiv, cc + al[36] + ca);
            b0(this, al[33], [this.scrollLeft])
        }
    },onSpacePress:function() {
        if (!this.spaceObj) {
            return
        }
        var ca = this.spaceObj,b8 = ca.toLeft,b7 = this.scrollLeft;
        var b9 = ca.toLeft - this.scrollLeft;
        if (Math.abs(b9) < 64) {
            this.onMouseUp();
            return
        }
        this.scrollTo(this.scrollLeft + (b9 > 0 ? 64 : -64))
    },onButtonPress:function() {
        if (!this.pressObj) {
            return
        }
        this.scrollTo(this.scrollLeft + this.pressObj.dir * 8)
    },onMouseUp:function(ca) {
        k(ca);
        if (ca && ca.target && ca.target.ownerDocument.releaseCapture) {
            ca.target.ownerDocument.releaseCapture()
        }
        var b8 = this.gantt,cb = b8.imgPath,b9 = b8.imgType;
        if (this.pressObj) {
            var b7 = this.pressObj;
            b0(this, al[33], [this.scrollLeft]);
            window.clearInterval(b7.timeout);
            c(b7.ul);
            bq(this.leftImg, b8.imgPath + al[40] + b8.imgType);
            bq(this.rightImg, b8.imgPath + al[39] + b8.imgType);
            this.pressObj = null
        }
        if (this.spaceObj) {
            var cc = this.spaceObj;
            b0(this, al[33], [this.scrollLeft]);
            this.scrollTo(cc.toLeft);
            window.clearInterval(cc.timeout);
            c(cc.ul);
            this.spaceObj = null
        }
    },onMouseDown:function(cd) {
        k(cd);
        if (this.pressObj || this.spaceObj) {
            this.onMouseUp(cd)
        }
        var ca = this.gantt,b7 = this.div,cf = ca.imgPath,cb = ca.imgType,ch = b7.ownerDocument;
        if (b7.setCapture) {
            b7.setCapture()
        }
        switch (cd.target) {case this.leftImg:case this.rightImg:var ce = (this.rightImg == cd.target);bq(cd.target, cf + "scroll_" + (ce ? al[66] : al[82]) + "1" + cb);var b8 = this.pressObj = {dir:(ce ? 1 : -1),timeout:window.setInterval(u(this, this.onButtonPress), 32),ul:i(ch, al[150], this, this.onMouseUp)};
            b0(this, al[34], [this.scrollLeft]);this.onButtonPress();break;case this.div:var cg = bW(cd, this.div);var cc = cg[0] / (this.size[0] - this.size[1] * 2) * (this.scrollWidth - this.offsetWidth);var b9 = this.spaceObj = {toLeft:cc,timeout:window.setInterval(u(this, this.onSpacePress), 128),ul:i(ch, al[150], this, this.onMouseUp)};b0(this, al[34], [this.scrollLeft]);this.onSpacePress();break;default:new q(b7, u(this, this.onBarMove), {interval:32}).onMouseDown(cd);break
        }
    },scrollTo:function(b8, b7) {
        b8 = this.scrollLeft = Math.max(Math.min(b8, this.scrollWidth - this.offsetWidth), 0);
        ai(this.barDiv.style, {left:(this.size[1] + b8 / (this.scrollWidth - this.offsetWidth) * this.width) + "px"});
        if (b7 != false) {
            b0(this, al[51], [b8])
        }
    },init:function(ca, b8, cb) {
        if (!ca || !b8) {
            return
        }
        var b9 = this.size[0] - this.size[1] * 2;
        this.offsetWidth = ca;
        this.scrollWidth = b8;
        this.barDiv.style.display = ca < b8 ? "" : al[47];
        var b7 = Math.max(b8 ? parseInt(b9 * ca / b8) : 0, 14);
        ai(this.barDiv.style, {width:b7 + "px"});
        ai(this.barCenterDiv.style, {width:b7 - 6 + "px"});
        this.width = b9 - b7;
        this.scrollTo(cb ? cb : this.scrollLeft, false)
    },initialize:function(b7) {
        if (!b7.getLayout) {
            return false
        }
        var b8 = this.targetDiv = b7.getLayout("listHead");
        if (!b8) {
            return false
        }
        if (!O.prototype.initialize.apply(this, arguments)) {
            return false
        }
        this.startLeft = parseInt(b8.firstChild.style.left);
        this.listeners.push(i(this, al[51], this, this.onScroll));
        this.listeners.push(i(b7, al[59], this, this.onResize));
        return true
    },onResize:function() {
        if (!this.container) {
            return
        }
        O.prototype.onResize.apply(this, arguments);
        this.init(this.targetDiv.offsetWidth, this.targetDiv.scrollWidth + this.startLeft)
    },onScroll:function(b7) {
        for (var b8 = this.targetDiv.firstChild;
             b8; b8 = b8.nextSibling) {
            if (!b8.style) {
                continue
            }
            b8.style.left = -b7 + this.startLeft + "px"
        }
        b0(this.targetDiv, al[51])
    }});
    function N() {
        this.layoutName = "mapFoot"
    }

    N.prototype = new O();
    ai(N.prototype, {initialize:function(b7) {
        if (!O.prototype.initialize.apply(this, arguments)) {
            return false
        }
        this.listeners.push(i(this, al[34], this, this.onScrollStart));
        this.listeners.push(i(this, al[51], this, this.onScroll));
        this.listeners.push(i(this, al[33], this, this.onScrollEnd));
        return true
    },onResize:function() {
        if (!this.container) {
            return
        }
        O.prototype.onResize.apply(this, arguments);
        var b7 = this.gantt.getLayout(al[75]).offsetWidth;
        this.init(b7, b7 * 9, b7 * 4)
    },onScrollStart:function(b7) {
        this.scrollObj = {start:b7,startTime:this.gantt.startTime}
    },onScroll:function(b7) {
        this.gantt.move(b7 - this.scrollObj.start);
        this.scrollObj.start = b7
    },onScrollEnd:function(b7) {
        this.onResize()
    }});
    function bN() {
    }

    bN.prototype = new J();
    ai(bN.prototype, {initialize:function(b8, b7) {
        if (!b8.getSelectedElements) {
            return false
        }
        this.gantt = b8;
        ai(b8, {addTask:u(this, this.addTask),deleteTask:u(this, this.deleteTask),upgradeSelectedTasks:u(this, this.upgradeSelectedTasks),degradeSelectedTasks:u(this, this.degradeSelectedTasks),upgradeTask:u(this, this.upgradeTask),degradeTask:u(this, this.degradeTask),addTasksLinks:u(this, this.addTasksLinks),removeTasksLinks:u(this, this.removeTasksLinks),focusIntoView:u(this, this.focusIntoView)});
        return true
    },addTask:function() {
        var b9 = this.gantt,cc = b9.data,cb = b9.getSelectedElements();
        var ca,b8 = null,cd = cb[0] ? cb[cb.length - 1] : null;
        if (cd) {
            if (!cd.getPreviousSibling()) {
                ca = cd.getParent()
            } else {
                b8 = cd.getPreviousSibling().getLastDescendant(true);
                ca = b8.getParent()
            }
        } else {
            if (!cc.getRootTask().getFirstChild()) {
                ca = cc.getRootTask()
            } else {
                b8 = cc.getRootTask().getLastChild().getLastDescendant(true);
                ca = b8.getParent()
            }
        }
        var b7 = cc.addTask(ca, b8);
        if (b7) {
            b9.setSelectedElement(b7)
        }
    },checkReadOnly:function() {
        var ca = this.gantt.getSelectedElements();
        var b7 = ca.length;
        for (var b8 = 0; b8 < b7; b8++) {
            if (ca[b8].ReadOnly) {
                var b9 = this.gantt.config.getConfig("SFGantt/noticeReadonly");
                if (b9) {
                    alert(b9)
                }
                return false
            }
        }
        return true
    },deleteTask:function() {
        if (!this.checkReadOnly()) {
            return false
        }
        var cb = this.gantt.getSelectedElements();
        var b7 = cb.length;
        if (!cb[0]) {
            return
        }
        if (b7 == 0) {
            return
        }
        var ca = this.gantt.config.getConfig("SFGantt/noticeDelete");
        if (ca && !window.confirm(ca)) {
            return
        }
        for (var b9 = cb.length - 1; b9 >= 0; b9--) {
            var b8 = cb[b9];
            if (!b8) {
                continue
            }
            this.gantt.data.deleteTask(b8)
        }
    },getTopSelectedTasks:function() {
        var ca = [],b9 = this.gantt.getSelectedElements();
        for (var b8 = 0; b8 < b9.length; b8++) {
            var b7;
            for (var b7 = ca.length - 1; b7 >= 0; b7--) {
                if (b9[b8].contains(ca[b7])) {
                    ca[b7] = b9[b8];
                    break
                } else {
                    if (ca[b7].contains(b9[b8])) {
                        break
                    }
                }
            }
            if (b7 < 0) {
                ca.push(b9[b8])
            }
        }
        return ca
    },upgradeSelectedTasks:function() {
        if (!this.checkReadOnly()) {
            return false
        }
        var b8 = this.getTopSelectedTasks();
        for (var b7 = 0; b7 < b8.length; b7++) {
            this.upgradeTask(b8[b7])
        }
    },degradeSelectedTasks:function() {
        if (!this.checkReadOnly()) {
            return false
        }
        var b8 = this.getTopSelectedTasks();
        for (var b7 = 0; b7 < b8.length; b7++) {
            this.degradeTask(b8[b7])
        }
    },upgradeTask:function(b9) {
        var cb = this.gantt.data,ca = b9.getParent();
        if (!ca || ca == cb.getRootTask()) {
            return false
        }
        var cc = b9.getNextSibling(),b7 = true;
        if (!cb.moveTask(b9, ca.getParent(), ca)) {
            return false
        }
        while (cc) {
            var b8 = cc.getNextSibling();
            if (!cb.moveTask(cc, b9, b9.getLastChild())) {
                return false
            }
            cc = b8
        }
        return true
    },degradeTask:function(b8) {
        var b7 = b8.getPreviousSibling();
        if (!b7) {
            return false
        }
        return this.gantt.data.moveTask(b8, b7, b7.getLastChild())
    },addTasksLinks:function() {
        var b8 = this.gantt.getSelectedElements();
        if (b8.length < 2) {
            return false
        }
        for (var b7 = 1; b7 < b8.length; b7++) {
            b8[b7].addPredecessorLink(b8[b7 - 1], 1)
        }
        return true
    },removeTasksLinks:function() {
        var b9 = this.gantt,cd = b9.data,cc = b9.getSelectedElements();
        if (cc.length < 2) {
            return false
        }
        for (var cb = 0; cb < cc.length; cb++) {
            for (var ca = 0; ca < cc.length; ca++) {
                if (cb == ca) {
                    continue
                }
                var b8 = cc[cb].getPredecessorLinks();
                for (var b7 = b8.length - 1; b7 >= 0; b7--) {
                    if (b8[b7].PredecessorTask == cc[ca]) {
                        cd.deleteLink(b8[b7]);
                        break
                    }
                }
            }
        }
        return true
    },focusIntoView:function() {
        var b8 = this.gantt,b7 = b8.getFocusElement();
        if (!b7 || !b7.Start || !b8.moveTo) {
            return
        }
        b8.moveTo(b7.Start);
        b8.move(-10)
    },remove:function() {
        var b7 = this.gantt;
        delete b7.addTask;
        delete b7.deleteTask;
        delete b7.upgradeSelectedTasks;
        delete b7.degradeSelectedTasks;
        delete b7.upgradeTask;
        delete b7.degradeTask;
        delete b7.addTasksLinks;
        delete b7.removeTasksLinks;
        delete b7.focusIntoView;
        J.prototype.remove.apply(this, arguments)
    }});
    function bd() {
    }

    bd.prototype = new J();
    ai(bd.prototype, {initialize:function(b7) {
        this.listeners = [i(b7, al[79], this, this.onBeforeResize)];
        var b9 = b7.maxSize,b8 = b7.minSize;
        b9 = b9 ? b9 : [1000,1000];
        b8 = b8 ? b8 : [200,200];
        ai(this, {maxSize:b9,minSize:b8,gantt:b7});
        b7.setMaxSize = u(this, function(ca) {
            this.maxSize = ca
        });
        b7.setMinSize = u(this, function(ca) {
            this.minSize = ca
        });
        return true
    },onBeforeResize:function(b8, b9) {
        var b7 = this.maxSize;
        if (b7 && (b7[0] < b9[0] || b7[1] < b9[1])) {
            b8.returnValue = false
        }
        var b7 = this.minSize;
        if (b7 && (b7[0] > b9[0] || b7[1] > b9[1])) {
            b8.returnValue = false
        }
    },remove:function() {
        var b7 = this.gantt;
        delete b7.setMaxSize;
        delete b7.setMinSize;
        J.prototype.remove.apply(this, arguments)
    }});
    function o(b7) {
        br(this, b7);
        this.items = []
    }

    o.prototype = new J();
    ai(o.prototype, {initialize:function(b8) {
        if (!b8.getMapPanel) {
            return false
        }
        br(this, b8.config.getConfigObj("SFGanttTasksMap"));
        if (!o.listIndex) {
            o.listIndex = 0
        }
        this.proTag = "mapDiv_" + (o.listIndex++);
        ai(this, {gantt:b8,taskHeight:12,taskStyles:b8.config.getConfigObj("SFGantt/taskStyle")});
        if (!this.taskStyles) {
            this.taskStyles = {}
        }
        this.taskPadding = b8.itemHeight - this.taskHeight;
        var b9 = b8.container.ownerDocument,b7 = this.div = b9.createElement("div");
        ai(this.div.style, {position:al[83],fontSize:"0px",left:"0px",top:"-1px",zIndex:100});
        var ca = b9.createElement("div");
        ai(ca.style, {position:al[83],padding:"0px",margin:"0px",border:"0px"});
        b7.appendChild(ca);
        b8.getMapPanel().appendChild(b7);
        this.listeners = [i(b8, al[80], this, this.onInitialize),i(b8, al[73], this, this.onScale),i(b8, al[46], this, this.drawTask),i(b8, al[45], this, this.clearTask),i(b8, al[44], this, this.updateTask),i(b7, al[62], this, this.onDblClick),i(b7, al[63], this, this.onClick),i(b7, al[152], this, this.onMouseDown)];
        if (b8.setTooltip) {
            b8.setTooltip(b7, u(this, this.getTooltip))
        }
        return true
    },addItem:function(b7) {
        if (!b7) {
            return
        }
        if (!b7.initialize(this)) {
            return false
        }
        this.items.push(b7);
        return true
    },setViewTop:function() {
        var b7 = this.gantt.getViewTop();
        this.div.firstChild.style.height = b7 + "px"
    },getTaskStyle:function(b7) {
        var b8 = b7.ClassName,b9 = this.taskStyles;
        b8 = b8 && b9[b8] ? b8 : this.taskStyle;
        return b9[b8]
    },drawTask:function(b9, ci) {
        var ca = this.gantt,cc = ca.getScale();
        if (!cc) {
            return
        }
        if (ci == 0) {
            this.setViewTop()
        }
        var b8 = ca.getElementDrawObj(b9);
        var cb = b8[this.proTag] = {};
        var b7 = b9.Start,cf = b9.Finish,ch = ca.getElementHeight(b9);
        var cj = this.div.ownerDocument.createElement("div"),cg = this.div.childNodes;
        cj.style.cssText = "position:relative;top:0px;left:" + ca.getMapPanelPosition(b7) + al[28] + ch + "px";
        cb.taskDiv = cj;
        cj._element = b9;
        var ce = this.items;
        if (cf && b7 && cf >= b7) {
            for (var cd = ce.length - 1; cd >= 0; cd--) {
                ce[cd].show(b9, cb, cc)
            }
        }
        if (ci + 1 == cg.length) {
            this.div.appendChild(cj)
        } else {
            this.div.insertBefore(cj, cg[ci + 1])
        }
    },updateTask:function(b9, cd) {
        if (!this.gantt.getElementDrawObj(b9)) {
            return
        }
        var b7 = this.gantt.getElementDrawObj(b9)[this.proTag];
        if (!b7) {
            return
        }
        var ce = b9.Start,cb = b9.Finish;
        b7.taskDiv.style.left = this.gantt.getMapPanelPosition(ce) + "px";
        var b8 = this.items,cc = (cb && ce && cb >= ce);
        if (z(cd, al[55])) {
            b7.taskDiv.style.backgroundColor = b9.Selected ? al[27] : ""
        }
        for (var ca = b8.length - 1; ca >= 0; ca--) {
            if (cc) {
                b8[ca].onUpdate(b9, b7, cd)
            } else {
                b8[ca].remove(b9, b7)
            }
        }
    },clearTask:function(b9, cb) {
        if (cb == 0) {
            this.setViewTop()
        }
        var ca = this.gantt.getElementDrawObj(b9);
        if (!ca) {
            return
        }
        var b7 = ca[this.proTag];
        if (!b7) {
            return
        }
        var b8 = this.items;
        for (var cc = b8.length - 1; cc >= 0; cc--) {
            b8[cc].remove(b9, b7)
        }
        if (b7) {
            b7.taskDiv._element = null
        }
        h(b7.taskDiv);
        ca[this.proTag] = null
    },getEventElement:function(b8) {
        if (!b8.target) {
            b8.target = b8.srcElement
        }
        for (var b7 = b8.target; b7; b7 = b7.parentNode) {
            if (b7 == this.div) {
                return null
            }
            if (b7._element) {
                return b7._element
            }
        }
    },onDblClick:function(b8) {
        var b7 = this.getEventElement(b8);
        if (!b7) {
            return
        }
        b0(this.gantt, "taskdblclick", [b7,"chart"])
    },onClick:function(b8) {
        var b7 = this.getEventElement(b8);
        if (!b7) {
            return
        }
        b0(this.gantt, "taskclick", [b7,b8])
    },onMouseDown:function(cb) {
        if (bT(cb) != 1) {
            return
        }
        var b9 = this.getEventElement(cb);
        if (!b9) {
            return
        }
        this.dragTask = b9;
        var b7 = this.gantt.getElementDrawObj(b9)[this.proTag];
        var b8 = this.items;
        for (var ca = b8.length - 1;
             ca >= 0; ca--) {
            b8[ca].onMouseDown(b9, b7, cb)
        }
    },onInitialize:function() {
        this.addItem(new aU());
        this.addItem(new aJ());
        this.addItem(new t());
        this.addItem(new ap());
        this.addItem(new bb());
        this.addItem(new b5());
        this.addItem(new I());
        this.addItem(new ay());
        this.addItem(new aF());
        this.addItem(new aW());
        var b7 = this.gantt;
        if (!b7.getScale()) {
            return
        }
        var b9 = b7.getViewElements();
        for (var b8 = 0; b8 < b9.length; b8++) {
            this.drawTask(b9[b8], b8)
        }
    },onScale:function() {
        var b9 = this.gantt,cb = b9.getScale();
        if (!cb) {
            return
        }
        var cf = b9.getViewElements(),ce = this.items;
        for (var cd = 0; cd < cf.length; cd++) {
            var b8 = cf[cd],ca = this.gantt.getElementDrawObj(b8)[this.proTag];
            if (!ca) {
                continue
            }
            var b7 = b8.Start;
            ca.taskDiv.style.left = b9.getMapPanelPosition(b7) + "px";
            for (var cc = ce.length - 1; cc >= 0; cc--) {
                ce[cc].onScale(b8, ca, cb)
            }
        }
    },getTooltip:function(cb, cc) {
        var b9 = this.getEventElement(cc);
        if (!b9) {
            return
        }
        var b8 = this.items,b7 = this.gantt.getElementDrawObj(b9)[this.proTag];
        for (var ca = b8.length - 1; ca >= 0; ca--) {
            if (b8[ca].getTooltip(b9, b7, cb, cc)) {
                return true
            }
        }
        return false
    },getTaskTooltipContent:function(b7, cb, b9) {
        var cc = this.div.ownerDocument,ce = cc.createElement(al[65]);
        ce.style.fontSize = "12px";
        ai(ce, {});
        var cf = ce.insertRow(-1);
        var cd = cf.insertCell(-1);
        ai(cd, {align:al[71],colSpan:2,noWrap:true});
        cd.appendChild(cc.createTextNode(cb));
        b9 = aL(b9);
        for (var b8 = 0; b8 < b9.length; b8++) {
            var ca = b9[b8];
            cf = ce.insertRow(-1);
            cd = cf.insertCell(-1);
            ai(cd, {align:al[82],noWrap:true});
            ca.showHead(cd);
            cd = cf.insertCell(-1);
            ai(cd, {align:al[82],noWrap:true});
            ca.showBody(cd, b7, this)
        }
        return ce
    },getLinkTooltipContent:function(b9) {
        var cc = this.div.ownerDocument,ce = cc.createElement(al[65]);
        ce.style.fontSize = "12px";
        ai(ce, {});
        var cf = ce.insertRow(-1);
        var cd = cf.insertCell(-1);
        ai(cd, {align:al[71],colSpan:2,noWrap:true});
        var cb = this.tooltipTitle.link;
        cd.appendChild(cc.createTextNode(cb));
        var b8 = aN(al[148], this.linkAddNoticeFields.split(","));
        for (var b7 = 0; b7 < b8.length; b7++) {
            var ca = b8[b7];
            cf = ce.insertRow(-1);
            cd = cf.insertCell(-1);
            ai(cd, {align:al[82],noWrap:true});
            ca.showHead(cd);
            cd = cf.insertCell(-1);
            ai(cd, {align:al[82],noWrap:true});
            ca.showBody(cd, b9, this)
        }
        return ce
    }});
    function bw() {
    }

    bw.prototype = new J();
    ai(bw.prototype, {initialize:function(b8, b7) {
        this.gantt = b8;
        ai(b8, {getStartTime:u(this, this.getStartTime),getScale:u(this, this.getScale),setStartTime:u(this, this.setStartTime),setScale:u(this, this.setScale),move:u(this, this.move),show:u(this, this.show)});
        b8.moveTo = b8.setStartTime;
        this.listeners = [i(b8, al[80], this, this.onGanttInit)];
        return true
    },onGanttInit:function() {
        var b8 = this.gantt;
        this.startTime = b8.startTime;
        if (!this.startTime) {
            var b7 = b8.data.getRootTask();
            if (b7) {
                this.startTime = b7.Start
            }
            if (!this.startTime) {
                this.startTime = new Date()
            }
        }
        if (!this.scale) {
            this.scale = 576 * 3600000 / 12
        }
    },move:function(b7) {
        this.setStartTime(new Date(b7 * this.scale + this.startTime.valueOf()))
    },getStartTime:function() {
        return this.startTime
    },setStartTime:function(ca) {
        var b7 = this.gantt,b9 = this.startTime;
        if (b9 && (b9 == ca || b9.valueOf() == ca.valueOf())) {
            return
        }
        var b8 = {returnValue:true};
        b0(b7, "beforestarttimechange", [b8,ca]);
        if (!b8.returnValue) {
            return false
        }
        this.startTime = ca;
        b0(b7, al[26], [ca]);
        b0(b7, al[132], [ca]);
        return true
    },getScale:function() {
        return this.scale
    },setScale:function(b8) {
        if (this.scale == b8) {
            return
        }
        var b7 = {returnValue:true};
        b0(this.gantt, "beforescalechange", [b7,b8]);
        if (!b7.returnValue) {
            return false
        }
        this.scale = b8;
        b0(this.gantt, al[73], [b8]);
        return true
    },show:function(b8, b9) {
        var b7 = this.gantt;
        if (b8) {
            b7.setStartTime(b8)
        }
        if (b9) {
            b7.setScale(b9)
        }
    },remove:function() {
        var b7 = this.gantt;
        delete b7.moveTo;
        delete b7.getStartTime;
        delete b7.getScale;
        delete b7.setStartTime;
        delete b7.setScale;
        delete b7.move;
        delete b7.show;
        J.prototype.remove.apply(this, arguments)
    }});
    function bm() {
    }

    bm.prototype = new J();
    ai(bm.prototype, {initialize:function(b8, b7) {
        if (!b8.getLayout || !b8.getStartTime || !b8.getLayout(al[75])) {
            return false
        }
        var b7 = this.div = b7.ownerDocument.createElement("div");
        ai(b7.style, {position:al[83],left:"0px",top:"0px"});
        b8.getLayout(al[75]).appendChild(b7);
        if (!b7) {
            return false
        }
        this.gantt = b8;
        b8.getMapPanel = u(this, this.getMapPanel);
        b8.getMapPanelPosition = u(this, this.getMapPanelPosition);
        this.listeners = [i(b8, al[80], this, this.onGanttInit),i(b8, al[26], this, this.onTimeChange),i(b8, al[73], this, this.onTimeChange),bi(b7, u(this, this.onMove), {container:b8.getContainer()})];
        return true
    },onGanttInit:function() {
        this.drawStart = this.gantt.getStartTime();
        this.onTimeChange()
    },onTimeChange:function(b7) {
        this.div.style.left = -Math.round(this.gantt.getStartTime() - this.drawStart) / this.gantt.getScale() + "px"
    },getMapPanelPosition:function(b7) {
        if (!b7) {
            return 0
        }
        return Math.round(b7 - this.drawStart) / this.gantt.getScale()
    },getMapPanel:function() {
        return this.div
    },onMove:function(ca, b8, b9) {
        var b7 = this.gantt,cc = b7.getLayout(al[41]);
        if (b9 == al[149]) {
            this.startPosition = cc.scrollTop;
            this.startTime = b7.getStartTime()
        }
        var cb = cc.scrollTop = this.startPosition - b8[1] + ca[1];
        b0(b7, al[51], [cb]);
        b7.setStartTime(new Date(this.startTime.valueOf() + (ca[0] - b8[0]) * b7.getScale()))
    },remove:function() {
        var b7 = this.gantt;
        delete b7.getMapPanel;
        delete b7.getMapPanelPosition;
        J.prototype.remove.apply(this, arguments)
    }});
    function bc() {
    }

    bc.prototype = new J();
    ai(bc.prototype, {initialize:function(b8) {
        if (!b8.getLayout || !b8.getStartTime || !b8.getLayout(al[75])) {
            return false
        }
        var b7 = this.div = b8.container.ownerDocument.createElement("div");
        ai(b7.style, {position:al[84],left:"0px",top:"0px",width:al[69],height:al[69],zIndex:10});
        b8.getContainer().appendChild(b7);
        if (!b7) {
            return false
        }
        this.gantt = b8;
        b8.getTimePanel = u(this, this.getTimePanel);
        b8.getTimePanelPosition = u(this, this.getTimePanelPosition);
        this.listeners = [i(b8, al[80], this, this.onGanttInit),i(b8, al[74], this, this.onTimeChange),i(b8, al[26], this, this.onTimeChange),i(b8, al[73], this, this.onTimeChange)];
        return true
    },onGanttInit:function() {
        this.drawStart = this.gantt.getStartTime();
        this.onTimeChange()
    },onTimeChange:function(b8) {
        if (!this.drawStart) {
            return
        }
        var b7 = this.gantt;
        this.div.style.left = -Math.round((b7.getStartTime() - this.drawStart) / b7.getScale() - bY(b7.getLayout(al[75]), b7.getContainer())[0]) + "px"
    },getTimePanelPosition:function(b7) {
        if (!b7) {
            return 0
        }
        return Math.round(b7 - this.drawStart) / this.gantt.getScale()
    },getTimePanel:function() {
        return this.div
    },remove:function() {
        var b7 = this.gantt;
        delete b7.getTimePanel;
        delete b7.getTimePanelPosition;
        J.prototype.remove.apply(this, arguments)
    }});
    function R(b9, b8, b7) {
        ai(this, {time:b9,dragable:b8,style:b7})
    }

    R.prototype = new J();
    ai(R.prototype, {initialize:function(b8) {
        if (!b8.getTimePanel) {
            return false
        }
        var b7 = b8.getTimePanel();
        if (!b7) {
            return false
        }
        b8.addTimeLine = u(b8, aP);
        if (!this.time) {
            return false
        }
        this.gantt = b8;
        br(this, b8.config.getConfigObj("SFGanttTimeLine"));
        var b9 = this.div = b8.container.ownerDocument.createElement("div");
        ai(b9.style, this.lineStyle);
        ai(b9.style, this.style);
        ai(b9.style, {position:al[84],fontSize:"0px",left:"-1px",top:"0px",height:al[69],zIndex:200});
        b7.appendChild(b9);
        this.listeners = [i(b8, al[73], this, this.onMove)];
        if (this.dragable) {
            B(b9, al[68]);
            this.listeners.push(bi(b9, u(this, this.onDrag), {container:b7}))
        }
        this.onMove();
        return true
    },onMove:function() {
        var b7 = this.gantt,b9 = b7.getScale(),b8 = b7.getStartTime();
        if (!b9 || !b8) {
            return
        }
        this.div.style.left = b7.getTimePanelPosition(this.time) + "px"
    },moveTo:function(b7) {
        this.time = b7;
        this.onMove()
    },onDrag:function(cb, b8, b9) {
        if (b9 == al[149]) {
            this.dragStart = this.time.valueOf()
        }
        var b7 = this.gantt,cd = new Date(this.dragStart + (b8[0] - cb[0]) * this.gantt.getScale());
        this.moveTo(cd);
        if (b7.getTooltip) {
            var ca = b7.getTooltip(),cc = bY(b7.getTimePanel(), b7.getContainer());
            ca.setContent(this.div.ownerDocument.createTextNode(aa(cd, this.tooltipFormat)));
            ca.show([b8[0] + cc[0],b8[1] + cc[1]])
        }
    }});
    function aP(ca, b9, b8) {
        var b7 = new R(ca, b9, b8);
        this.addControl(b7);
        return b7
    }

    ai(R, {addTimeLine:aP});
    function bs(b8, b7) {
    }

    bs.prototype = new J();
    ai(bs.prototype, {initialize:function(b8, b7) {
        if (b8.disableTimeScrollNotice || !b8.getLayout) {
            return false
        }
        br(this, b8.config.getConfigObj("SFGanttTimeScrollNotice"));
        this.gantt = b8;
        this.div = b7.ownerDocument.createElement("div");
        ai(this.div.style, {position:al[84],zIndex:400,display:al[47],left:"100px"});
        ai(this.div.style, this.divStyle);
        b7.appendChild(this.div);
        this.listeners = [i(b8, al[132], this, this.onMove),i(b8, al[74], this, this.onResize)];
        return true
    },onMove:function(b7) {
        if (!this.timeout) {
            this.timeout = window.setInterval(u(this, this.onTime), 64)
        }
        this.lastTime = b7;
        this.idleTimes = 0;
        this.changed = true
    },onTime:function() {
        if (!this.changed) {
            this.idleTimes++;
            if (this.idleTimes > 4) {
                window.clearInterval(this.timeout);
                this.div.style.display = al[47];
                delete this.timeout
            }
            return
        }
        this.changed = false;
        this.div.style.display = "";
        this.div.innerHTML = aa(this.lastTime, this.dateFormat)
    },onResize:function() {
        var b7 = this.gantt.getLayout(al[75]);
        this.div.style.left = (bY(b7, this.gantt.getContainer())[0] + 1) + "px";
        this.div.style.bottom = this.gantt.footHeight + 5 + "px"
    }});
    function bv() {
    }

    bv.prototype = new J();
    ai(bv.prototype, {initialize:function(b8) {
        if (b8.disableTimeSegmentation || !b8.getTimePanel || !b8.getCalList) {
            return false
        }
        var b7 = b8.getTimePanel();
        if (!b7) {
            return false
        }
        br(this, b8.config.getConfigObj("SFGanttTimeSegmentation"));
        this.gantt = b8;
        var b9 = this.div = b8.container.ownerDocument.createElement("div");
        ai(b9.style, {position:al[84],fontSize:"0px",left:"0px",top:"0px",height:al[69],width:al[69],zIndex:20});
        b7.appendChild(b9);
        this.listeners = [i(b8, al[80], this, this.reDraw),i(b8, al[74], this, this.reDraw),i(b8, al[73], this, this.reDraw),i(b8, al[132], this, this.reDraw)];
        this.reDraw();
        return true
    },reDraw:function() {
        var b7 = this.gantt,b8 = b7.getCalList();
        if (!b8 || !b8[1]) {
            return
        }
        this.showSegmentations(b7.getScale(), b7.getStartTime().valueOf(), b8[1])
    },showSegmentations:function(cd, ca, cc) {
        if (this.cal != cc || !this.drawStart || Math.abs(ca - this.drawStart) / cd > 10000) {
            this.clear();
            ai(this, {cal:cc,drawStart:ca,scale:cd});
            this.div.style.left = this.gantt.getTimePanelPosition(ca) + "px"
        }
        if (this.scale != cd) {
            for (var ce = this.div.firstChild; ce; ce = ce.nextSibling) {
                ce.style.left = (ce.sTime - this.drawStart) / cd + 1 + "px"
            }
            this.div.style.left = this.gantt.getTimePanelPosition(this.drawStart) + "px";
            this.scale = cd
        }
        var b8 = ca + this.div.offsetWidth * cd;
        var b7 = this.div;
        var b9 = b7.firstChild ? b7.firstChild.sTime : Number.MAX_VALUE;
        var cb = b7.lastChild ? b7.lastChild.eTime : Number.MIN_VALUE;
        if (ca > (b7.firstChild ? b7.firstChild.eTime : Number.MAX_VALUE)) {
            while (b7.firstChild && b7.firstChild.eTime < ca) {
                h(b7.firstChild)
            }
            b9 = b7.firstChild ? b7.firstChild.sTime : Number.MAX_VALUE
        }
        if ((b7.lastChild ? b7.lastChild.sTime : Number.MIN_VALUE) > b8) {
            while (b7.lastChild && b7.lastChild.sTime > b8) {
                h(b7.lastChild)
            }
            cb = b7.lastChild ? b7.lastChild.eTime : Number.MIN_VALUE
        }
        if (ca < b9) {
            this.addSegmentation(ca, Math.min(b9, b8), cc, b7, cd, -1);
            b9 = b7.firstChild ? b7.firstChild.sTime : Number.MAX_VALUE;
            cb = b7.lastChild ? b7.lastChild.eTime : Number.MIN_VALUE
        }
        if (cb < b8) {
            this.addSegmentation(Math.max(cb, ca), b8, cc, b7, cd, 1)
        }
    },addSegmentation:function(b9, cc, b8, cf, ca, cb) {
        var cd = parseInt(b8.getFloorTime(new Date(b9)).valueOf());
        var cg = null;
        while (cd < cc) {
            var ce = parseInt(b8.getNextTime(new Date(cd)).valueOf());
            var b7 = this.div.ownerDocument.createElement("div");
            ai(b7, {sTime:cd,eTime:ce});
            ai(b7.style, {position:al[84],left:(cd - this.drawStart) / ca + 1 + "px",top:"0px",width:"0px",height:al[69],borderLeft:al[25]});
            ai(b7.style, this.lineStyle);
            if (cb == -1) {
                if (cg == null) {
                    cf.insertBefore(b7, cf.firstChild)
                } else {
                    if (cg.nextSibling == null) {
                        cf.appendChild(b7)
                    } else {
                        cf.insertBefore(b7, cg.nextSibling)
                    }
                }
            } else {
                cf.appendChild(b7)
            }
            cg = b7;
            cd = ce
        }
    },clear:function() {
        h(this.div, true)
    }});
    function aY() {
    }

    aY.prototype = new J();
    ai(aY.prototype, {initialize:function(b8) {
        if (b8.disableTooltip) {
            return false
        }
        br(this, b8.config.getConfigObj("SFTooltip"));
        var b9 = b8.container.ownerDocument.createElement("div");
        ai(b9.style, {position:al[84],zIndex:650});
        ai(b9.style, this.divStyle);
        var b7 = b8.container;
        ai(this, {gantt:b8,div:b9,container:b7});
        this.listeners = [i(b7, "mouseover", this, this.onMouseOver)];
        ai(b8, {getTooltip:u(this, this.getTooltip),setTooltip:u(this, this.setTooltip)});
        return true
    },onMouseOver:function(b8) {
        var b7 = b8.target;
        while (b7) {
            if (b7._SF_E_ && b7._SF_E_.tooltip && b7._SF_E_.tooltip(this, b8)) {
                k(b8);
                this.show(bU(b8, this.container), b7);
                return
            }
            b7 = b7.parentNode
        }
    },setContent:function(b7) {
        h(this.div, true);
        this.div.appendChild(b7)
    },getContent:function() {
        return this.div
    },show:function(b7, ca) {
        ca = ca ? ca : this.div;
        this.container.appendChild(this.div);
        var b9 = b7[0] + 5,b8 = b7[1] + 5;
        if (!this.position) {
            if (b9 + this.div.offsetWidth > this.container.offsetWidth) {
                b9 = b7[0] - this.div.offsetWidth - 2
            }
            if (b8 + this.div.offsetHeight > this.container.offsetHeight) {
                b8 = b7[1] - this.div.offsetHeight - 2
            }
        }
        ai(this.div.style, {left:b9 + "px",top:b8 + "px"});
        this.container._ganttTip = this;
        this.hl = i(ca, "mouseout", this, function(cb) {
            this.hidden()
        })
    },hidden:function() {
        if (this.div.parentNode == this.container) {
            this.container.removeChild(this.div)
        }
        this.container._ganttTip = null;
        this.bindObject = null;
        c(this.hl)
    },setTooltip:function(b8, b7) {
        if (!b8._SF_E_) {
            b8._SF_E_ = []
        }
        b8._SF_E_.tooltip = b7
    },getTooltip:function() {
        return this
    },remove:function() {
        this.hidden();
        var b7 = this.gantt;
        delete b7.getTooltip;
        delete b7.setTooltip;
        delete this.container;
        J.prototype.remove.apply(this, arguments)
    }});
    function W(b7) {
        this.elementType = b7
    }

    W.prototype = new J();
    ai(W.prototype, {initialize:function(b7) {
        if (!b7.getLayout || !b7.getLayout(al[41])) {
            return false
        }
        ai(this, {gantt:b7,heightSpan:[0,0],viewElements:[]});
        b7.getViewTop = u(this, this.getViewTop);
        b7.getViewElements = u(this, this.getViewElements);
        b7.getViewIndex = u(this, this.getViewIndex);
        b7.getElementViewTop = u(this, this.getElementViewTop);
        this.listeners = [i(b7, al[80], this, this.onGanttInit),i(b7, al[51], this, this.onScroll),i(b7, al[78], this, this.showViewElements)];
        return true
    },onGanttInit:function() {
        var b8 = this.gantt.getData(),b7 = this.elementType.toLowerCase();
        this.listeners = this.listeners.concat([i(b8, al[131] + b7 + al[132], this, this.onElementMove),i(b8, al[131] + b7 + "add", this, this.onElementAdd),i(b8, al[131] + b7 + al[136], this, this.onElementDelete),i(b8, al[131] + b7 + al[129], this, this.onElementChange)]);
        this.showViewElements()
    },inViewElement:function(b9, b8) {
        var b7 = this.gantt;
        if (b8 < 0) {
            this.viewElements.push(b9);
            b8 = this.viewElements.length - 1
        } else {
            this.viewElements.splice(b8, 0, b9)
        }
        if (this.viewElements[1] && b8 == 0) {
            this.heightSpan[0] -= b7.getElementHeight(b9)
        } else {
            this.heightSpan[1] += b7.getElementHeight(b9)
        }
        b0(b7, al[76], [this.heightSpan]);
        b0(b7, this.elementType.toLowerCase() + "inview", [b9,b8])
    },outViewElement:function(b9) {
        if (b9 < 0) {
            b9 = this.viewElements.length - 1
        }
        if (b9 < 0) {
            return
        }
        var ca = this.viewElements.splice(b9, 1)[0],b7 = this.gantt,b8 = b7.getElementDrawObj(ca);
        if (b9 == 0 && this.viewElements.length > 0 && !ca.isHidden()) {
            this.heightSpan[0] += b8.height
        } else {
            this.heightSpan[1] -= b8.height
        }
        b0(b7, al[76], [this.heightSpan]);
        b0(b7, this.elementType.toLowerCase() + "outview", [ca,b9])
    },getViewIndex:function(b8) {
        for (var b7 = this.viewElements.length - 1;
             b7 >= 0; b7--) {
            if (b8 == this.viewElements[b7]) {
                return b7
            }
        }
        return -1
    },getViewTop:function() {
        return this.heightSpan[0]
    },resetHeightSpan:function() {
        var b9 = this.viewElements[0],b7 = 0,cc = false,b8 = this.gantt;
        if (b9) {
            for (var ca = b8.getData().getRootElement(this.elementType).getFirstChild(); ca; ca = ca.getNextView()) {
                if (ca == b9) {
                    cc = true;
                    break
                }
                b7 += b8.getElementDrawObj(ca).height
            }
            if (cc) {
                var cb = this.heightSpan[0] - b7;
                this.heightSpan[0] = b7;
                this.heightSpan[1] -= cb
            }
        } else {
            this.heightSpan = [0,0]
        }
        b0(b8, al[76], [this.heightSpan])
    },delayShowViewElements:function() {
        if (!this.dst) {
            this.dst = window.setInterval(u(this, this.onShowTime), 32)
        }
        this.showChanged = true;
        this.showIdleTimes = 0
    },onShowTime:function() {
        if (!this.showChanged) {
            this.showIdleTimes++;
            if (this.showIdleTimes > 4) {
                window.clearInterval(this.dst);
                delete this.dst;
                this.showViewElements(true)
            }
            return
        }
        this.showChanged = false
    },showViewElements:function(b7) {
        var cb = this.gantt,cf = cb.getLayout(al[41]),b9 = cb.viewEnlargeHeight,cg = cb.viewBufferHeight + b9;
        var ci = cf.scrollTop - b9;
        var ca = ci + cf.clientHeight + b9 * 2;
        if (b7 && this.viewElements.length > 1) {
            var cj = this.heightSpan[0];
            var cc = 0;
            for (var ce = 0; ce < this.viewElements.length - 1;
                 ce++) {
                var ch = this.viewElements[ce],b8 = this.viewElements[ce + 1];
                if (ch.getNextView() != b8) {
                    for (var cd = ch.getNextView(); cd && cd != b8; cd = cd.getNextView()) {
                        cj += cb.getElementHeight(cd);
                        this.inViewElement(cd, ce + (++cc), true);
                        if (cj > ca) {
                            break
                        }
                    }
                    ce += cc;
                    cc = 0
                } else {
                    cj += cb.getElementHeight(ch)
                }
                if (cj > ca) {
                    this.removeViewElements(ce + cc);
                    this.heightSpan[1] = cj;
                    b0(cb, al[76], [this.heightSpan]);
                    break
                }
            }
        }
        while (this.viewElements[0] && this.heightSpan[0] + cb.getElementHeight(this.viewElements[0]) < ci - cg) {
            this.outViewElement(0)
        }
        while (this.viewElements[0] && this.heightSpan[1] - cb.getElementHeight(this.viewElements[this.viewElements.length - 1]) > ca + cg) {
            this.outViewElement(-1)
        }
        if (!this.viewElements[0]) {
            var cj = 0,cd = cb.data.getRootElement(this.elementType).getNext();
            while (cj < ci && cd) {
                if (cj + cb.getElementHeight(cd) >= ci) {
                    break
                }
                cj += cb.getElementHeight(cd);
                cd = cd.getNextView()
            }
            if (!cd) {
                return
            }
            this.heightSpan = [cj,cj];
            b0(cb, al[76], [this.heightSpan]);
            this.inViewElement(cd, -1)
        }
        while (this.heightSpan[1] < ca) {
            var cd = this.viewElements[this.viewElements.length - 1].getNextView();
            if (!cd) {
                break
            }
            this.inViewElement(cd, -1)
        }
        while (this.heightSpan[0] > ci) {
            var cd = this.viewElements[0].getPreviousView();
            if (!cd) {
                break
            }
            this.inViewElement(cd, 0)
        }
    },getElementViewTop:function(cb) {
        var cc = this.viewElements[0];
        var b8 = this.gantt,b9 = b8.data.compareElement(cc, cb) > 0,b7 = 0;
        for (var ca = cb; ca; ca = b9 ? ca.getPreviousView() : ca.getNextView()) {
            if (ca == cb && b9) {
                continue
            }
            if (ca == cc && !b9) {
                break
            }
            b7 += b8.getElementHeight(ca) * (b9 ? 1 : -1);
            if (ca == cc) {
                break
            }
        }
        return this.getViewTop() + b7
    },removeViewElements:function(b7) {
        for (var b8 = this.viewElements.length - 1; b8 > b7; b8--) {
            this.outViewElement(-1, true)
        }
    },getViewElements:function() {
        return this.viewElements
    },onElementChange:function(b8, b7, cd, cb) {
        switch (b7) {case al[114]:if (b8.isHidden()) {
            return
        }var cf = this.viewElements[0] && this.gantt.data.compareElement(b8, this.viewElements[0]) > 0;var cc = b8.Collapse;if (cc) {
            for (var b9 = 0; b9 < this.viewElements.length; b9++) {
                if (b8 != this.viewElements[b9] && b8.contains(this.viewElements[b9])) {
                    this.outViewElement(b9, true);
                    b9--
                }
            }
        }if (cf) {
            this.resetHeightSpan()
        }this.showViewElements(!cc);break;case al[113]:if (b8.isHidden()) {
            return
        }if (this.viewElements[0] && this.gantt.data.compareElement(b8, this.viewElements[0]) >= 0) {
            var ce = cd - (cb ? cb : this.gantt.itemHeight);
            this.heightSpan[0] += ce;
            this.heightSpan[1] += ce;
            b0(this.gantt, al[76], [this.heightSpan])
        }var ca = this.getViewIndex(b8);this.outViewElement(ca, true);this.gantt.removeElementDrawObj(b8);this.delayShowViewElements();break
        }
    },onElementAdd:function(b9) {
        if (b9.isHidden()) {
            return
        }
        var b8 = false;
        if (this.viewElements[0] && this.gantt.data.compareElement(b9, this.viewElements[0]) > 0) {
            var b7 = this.gantt.getElementHeight(b9);
            this.heightSpan[0] += b7;
            this.heightSpan[1] += b7;
            b0(this.gantt, al[76], [this.heightSpan]);
            b8 = true
        }
        if (b8 || this.viewElements.length == 0 || z(this.viewElements, b9.getNextView()) || z(this.viewElements, b9.getPreviousView())) {
            this.delayShowViewElements()
        }
    },onElementMove:function(cb, b8, ce) {
        var cd = this.gantt.data;
        var cc = (!b8.Collapse && !b8.isHidden()) && this.viewElements[0] && cd.compareElement((ce ? ce.getLastDescendant(true) : b8), this.viewElements[0]) > 0;
        var b7 = (!cb.isHidden()) && this.viewElements[0] && cd.compareElement(cb, this.viewElements[0]) > 0;
        for (var ca = 0; ca <= this.viewElements.length; ca++) {
            if (cb.contains(this.viewElements[ca])) {
                var b9 = this.viewElements[ca];
                this.outViewElement(ca, true);
                this.gantt.removeElementDrawObj(b9);
                ca--
            }
        }
        if (cc != b7) {
            this.resetHeightSpan()
        }
        this.delayShowViewElements()
    },onElementDelete:function(cc, b8, ce) {
        if (b8.Collapse || b8.isHidden()) {
            return
        }
        var b7 = ce ? ce.getLastDescendant(true) : b8,cd = this.viewElements;
        var cb = cd[0] && this.gantt.data.compareElement(b7, cd[0]) > 0;
        for (var ca = cd.length - 1; ca >= 0; ca--) {
            if (cd[ca].isHidden()) {
                var b9 = cd[ca];
                this.outViewElement(ca, true)
            }
        }
        if (cb) {
            this.resetHeightSpan()
        }
        if (this.Selected) {
            this.removeSelectedElement(cc)
        }
        this.delayShowViewElements()
    },onScroll:function(b7) {
        this.showViewElements()
    },remove:function() {
        var b7 = this.gantt;
        delete b7.getViewTop;
        delete b7.getViewElements;
        delete b7.getViewIndex;
        delete b7.getElementViewTop;
        delete this.viewElements;
        J.prototype.remove.apply(this, arguments)
    }});
    function bI() {
    }

    bI.prototype = new J();
    ai(bI.prototype, {initialize:function(b8) {
        if (b8.disableWorkingMask || !b8.getTimePanel || !b8.getCalList) {
            return false
        }
        var b7 = b8.getTimePanel();
        if (!b7) {
            return false
        }
        br(this, b8.config.getConfigObj("SFGanttWorkingMask"));
        this.gantt = b8;
        var b9 = this.div = b8.container.ownerDocument.createElement("div");
        ai(b9.style, {position:al[84],fontSize:"0px",left:"0px",top:"0px",height:al[69],width:al[69],zIndex:10});
        b7.appendChild(b9);
        this.listeners = [i(b8, al[80], this, this.onGanttInit),i(b8, al[74], this, this.reDraw),i(b8, al[73], this, this.reDraw),i(b8, al[132], this, this.reDraw)];
        this.reDraw();
        return true
    },onGanttInit:function() {
        this.calendar = this.gantt.getData().getCalendar();
        this.reDraw()
    },reDraw:function() {
        var b7 = this.gantt,ca = b7.getScale(),b8 = b7.getStartTime(),b9 = b7.getCalList();
        if (!b9 || !b9[0] || !this.calendar) {
            return
        }
        this.showSegmentations(b7.getScale(), b7.getStartTime().valueOf(), b9[0])
    },showSegmentations:function(cd, ca, cc) {
        if (this.cal != cc || !this.drawStart || Math.abs(ca - this.drawStart) / cd > 10000) {
            this.clear();
            ai(this, {scale:cd,drawStart:ca,cal:cc});
            this.div.style.left = this.gantt.getTimePanelPosition(ca) + "px"
        }
        if (this.scale != cd) {
            for (var ce = this.div.firstChild; ce; ce = ce.nextSibling) {
                ai(ce.style, {left:(ce.sTime - this.drawStart) / cd + 1 + "px",width:(ce.eTime - ce.sTime) / cd + "px"})
            }
            this.div.style.left = this.gantt.getTimePanelPosition(this.drawStart) + "px";
            this.scale = cd
        }
        var b8 = ca + this.div.offsetWidth * cd;
        var b7 = this.div;
        var b9 = b7.firstChild ? b7.firstChild.sTime : Number.MAX_VALUE;
        var cb = b7.lastChild ? b7.lastChild.eTime : Number.MIN_VALUE;
        if (ca > (b7.firstChild ? b7.firstChild.eTime : Number.MAX_VALUE)) {
            while (b7.firstChild && b7.firstChild.eTime < ca) {
                h(b7.firstChild)
            }
            b9 = b7.firstChild ? b7.firstChild.sTime : Number.MAX_VALUE
        }
        if ((b7.lastChild ? b7.lastChild.sTime : Number.MIN_VALUE) > b8) {
            while (b7.lastChild && b7.lastChild.sTime > b8) {
                h(b7.lastChild)
            }
            cb = b7.lastChild ? b7.lastChild.eTime : Number.MIN_VALUE
        }
        if (ca < b9) {
            this.addMask(ca, Math.min(b9, b8), cc, b7, cd, -1);
            b9 = b7.firstChild ? b7.firstChild.sTime : Number.MAX_VALUE;
            cb = b7.lastChild ? b7.lastChild.eTime : Number.MIN_VALUE
        }
        if (cb < b8) {
            this.addMask(Math.max(cb, ca), b8, cc, b7, cd, 1)
        }
    },addMask:function(b9, cd, b8, ch, cb, cc) {
        var ce = parseInt(b8.getFloorTime(new Date(b9)).valueOf()),cg = this.div.ownerDocument;
        var ci = null;
        while (ce < cd) {
            var cf = parseInt(b8.getNextTime(new Date(ce)).valueOf());
            var ca = this.calendar.getWorkTime(new Date(ce));
            if (ca[0] >= cf.valueOf()) {
                var b7 = cg.createElement("div");
                ai(b7, {sTime:ce,eTime:cf});
                ai(b7.style, {position:al[84],left:(ce - this.drawStart) / cb + 1 + "px",top:"0px",width:(cf - ce) / cb + "px",height:al[69]});
                bq(b7, this.gantt.imgPath + "map_mask" + this.gantt.imgType);
                if (cc == -1) {
                    if (ci == null) {
                        ch.insertBefore(b7, ch.firstChild)
                    } else {
                        if (ci.nextSibling == null) {
                            ch.appendChild(b7)
                        } else {
                            ch.insertBefore(b7, ci.nextSibling)
                        }
                    }
                } else {
                    ch.appendChild(b7)
                }
                ci = b7
            }
            ce = cf
        }
    },clear:function() {
        h(this.div, true)
    }});
    function b6() {
    }

    b6.prototype = new J();
    ai(b6.prototype, {initialize:function(b8, b7) {
        this.gantt = b8;
        this.levels = [3 * 60000 / 6,30 * 60000 / 6,3600000 / 6,4 * 3600000 / 6,12 * 3600000 / 6,24 * 3600000 / 6,96 * 3600000 / 6,192 * 3600000 / 6,576 * 3600000 / 6,1728 * 3600000 / 6];
        ai(b8, {zoomIn:u(this, this.zoomIn),zoomOut:u(this, this.zoomOut),zoomTo:u(this, this.zoomTo),show:u(this, this.show)});
        b8.showMap = b8.show;
        this.listeners = [i(b8, al[80], this, this.onScaleChange),i(b8, al[73], this, this.onScaleChange)];
        return true
    },getZoomScale:function(b8, b7) {
        return this.levels[this.getZoomIndex(b8, b7)]
    },getZoomIndex:function(cb, b8) {
        b8 = b8 ? b8 : 0;
        var ca = this.levels,b7 = ca.length;
        for (var b9 = 0; b9 < b7; b9++) {
            var cc = ca[b9];
            if (cb <= cc) {
                if (b9 > 0 && ((b8 == 1) || (b8 == 0 && cb / (ca[b9 - 1]) < cc / cb))) {
                    return b9 - 1
                }
                return b9
            }
        }
        return b7 - 1
    },onScaleChange:function() {
        this.zoomIndex = this.getZoomIndex(this.gantt.getScale())
    },zoomIn:function() {
        this.zoomTo(this.zoomIndex - 1)
    },zoomOut:function() {
        this.zoomTo(this.zoomIndex + 1)
    },zoomTo:function(b7) {
        if (!this.levels[b7]) {
            return
        }
        var b8 = this.zoomIndex;
        this.zoomIndex = b7;
        this.gantt.setScale(this.levels[b7]);
        b0(this, "zoom", [b7,b8])
    },show:function(b9, b8) {
        var ca = this.levels[b8];
        ca = ca ? ca : b8;
        var b7 = this.gantt;
        if (b9) {
            b7.setStartTime(b9)
        }
        if (ca) {
            b7.setScale(ca)
        }
    },remove:function() {
        var b7 = this.gantt;
        delete b7.showMap;
        delete b7.zoomIn;
        delete b7.zoomOut;
        delete b7.zoomTo;
        delete b7.show;
        J.prototype.remove.apply(this, arguments)
    }});
    function bO() {
        if (arguments.length <= 0) {
            return
        }
        ai(this, {width:100,headText:"",headStyle:{textAlign:al[71]},bodyStyle:{textAlign:al[82]},inputStyle:{}});
        var b8 = arguments[0];
        if (typeof(b8) != al[159]) {
            var b7 = arguments;
            b8 = {};
            if (b7[0]) {
                b8.width = b7[0]
            }
            if (b7[1]) {
                b8.headText = b7[1]
            }
            if (b7[2]) {
                b8.headFunc = b7[2]
            }
            if (b7[3]) {
                b8.bodyFunc = b7[3]
            }
            if (b7[4]) {
                b8.inputFunc = b7[4]
            }
            if (b7[5]) {
                b8.inputData = b7[5]
            }
            if (b7[6]) {
                b8.bodyData = b7[6]
            }
        }
        ai(this, b8)
    }

    ai(bO.prototype, {setWidth:function(b7) {
        this.width = parseInt(b7)
    },setHeadText:function(b7) {
        this.headText = b7
    },setHeadAlign:function(b7) {
        this.setHeadStyle({textAlign:b7})
    },setHeadColor:function(b7) {
        this.setHeadStyle({color:b7})
    },setHeadBgColor:function(b7) {
        this.setHeadStyle({backgroundColor:b7})
    },setHeadStyle:function(b7) {
        ai(this.headStyle, b7)
    },setBodyAlign:function(b7) {
        this.setBodyStyle({textAlign:b7})
    },setBodyColor:function(b7) {
        this.setBodyStyle({color:b7})
    },setBodyBgColor:function(b7) {
        this.setBodyStyle({backgroundColor:b7})
    },setBodyStyle:function(b7) {
        ai(this.bodyStyle, b7)
    },setInputHandle:function(b7) {
        this.inputFunc = b7
    },setInputStyle:function(b7) {
        ai(this.inputStyle, b7)
    },setReadOnly:function(b7) {
        this.ReadOnly = b7
    },showHead:function(b7, b8) {
        h(b7, true);
        ai(b7.style, this.headStyle);
        return this.headFunc(b7, b8)
    },showBody:function(b7, b8, b9) {
        h(b7, true);
        ai(b7.style, this.bodyStyle);
        return this.bodyFunc(b7, b8, b9)
    },showInput:function(b7, b8, b9) {
        h(b7, true);
        ai(b7.style, this.bodyStyle);
        ai(b7.style, this.inputStyle);
        return this.inputFunc(b7, b8, b9)
    },checkUpdate:function(ca) {
        if (!this.bodyData) {
            return false
        }
        var b7 = this.bodyData.split(",");
        for (var b9 = 0; b9 < b7.length; b9++) {
            for (var b8 = 0; b8 < ca.length; b8++) {
                if (ca[b8] == b7[b9]) {
                    return true
                }
            }
        }
        return false
    },headFunc:function(b7) {
        b7.appendChild(b7.ownerDocument.createTextNode(this.headText))
    },bodyFunc:function(b7, b8, ca) {
        var b9 = b8[this.bodyData];
        b9 = (typeof(b9) != al[155]) ? b9 : "";
        b7.appendChild(b7.ownerDocument.createTextNode(b9))
    },createInput:function(ca, b9, b8) {
        var b7 = ca.ownerDocument.createElement("input");
        ai(b7.style, {width:al[69],height:al[69],border:"solid 2px #000000",overflow:al[81]});
        e(b7, al[63], j);
        e(b7, al[150], j);
        e(b7, al[152], function(cb) {
            c(b7.cml);
            b7.cml = e(b7, al[42], j);
            j(cb)
        });
        e(b7, al[22], j);
        b7.cml = e(b7, al[42], k);
        return b7
    },inputFunc:function(b7, b9, cc) {
        var cb = this.inputData,cd = this;
        var ca = b9[this.inputData];
        var b8 = this.createInput(b7, cd, cc);
        b8.value = (typeof(ca) != al[155]) ? ca : "";
        e(b8, al[21], function(cf) {
            if (cf.keyCode == 27) {
                var ce = b9[cb];
                b8.value = (typeof(ce) != al[155]) ? ce : ""
            }
            if (cf.keyCode == 13) {
                b9.setProperty(cb, b8.value);
                h(b7, true);
                cd.showBody(b7, b9, cc)
            }
        });
        e(b8, al[129], function() {
            b9.setProperty(cb, b8.value)
        });
        b7.appendChild(b8);
        b8.focus()
    }});
    function aO(b9, b8) {
        var b7 = bO[al[24] + b9];
        if (!b7 || !b7[b8]) {
            aM(b9, b8, new bO(100, b8))
        }
        if (!b7) {
            b7 = bO[al[24] + b9]
        }
        return b7[b8]
    }

    function aN(b9, ca) {
        var b7 = [];
        for (var b8 = 0; b8 < ca.length; b8++) {
            if (!ca[b8]) {
                continue
            }
            b7.push(aO(b9, ca[b8]))
        }
        return b7
    }

    function aM(b9, b8, ca) {
        var b7 = bO[al[24] + b9];
        if (!b7) {
            b7 = bO[al[24] + b9] = {}
        }
        b7[b8] = ca;
        ca.Name = b8
    }

    function aL(b7) {
        return aN(al[148], b7)
    }

    function aK(b7) {
        return aN(al[146], b7)
    }

    function aI(b7) {
        return aO(al[148], b7)
    }

    function aH(b7) {
        return aO(al[146], b7)
    }

    function az(b7, b8) {
        return aM(al[148], b7, b8)
    }

    function aw(b7, b8) {
        return aM(al[146], b7, b8)
    }

    function av(b7, b9, ce, cc, b8, cb, cd, ca) {
        aM(al[148], b7, new bO({width:b9,headText:ce,headFunc:cc,bodyFunc:b8,inputFunc:cb,inputData:cd,bodyData:ca}))
    }

    function au() {
        if (bO.inited) {
            return
        }
        bO.inited = true;
        bO.NormalHead = bO.prototype.headFunc;
        bO.NormalBody = bO.prototype.bodyFunc;
        bO.BoolBody = at.prototype.bodyFunc;
        bO.BoolInput = at.prototype.inputFunc;
        bO.BoolCheckbox = at.prototype.inputFunc;
        bO.createInput = bO.prototype.createInput;
        bO.NormalInput = bO.prototype.inputFunc;
        bO.DateBody = S.prototype.bodyFunc;
        bO.DateInput = S.prototype.inputFunc;
        var b7 = window._SFGantt_config.SFGanttField;
        var b9 = b7.taskFieldTexts;
        az("Empty", new bO({width:36,ReadOnly:true}));
        az("UID", new bO({width:36,bodyData:"UID",headText:b9.UID,ReadOnly:true,bodyStyle:{textAlign:al[71]}}));
        az("ID", new bO({width:36,bodyData:"ID",headText:b9.ID,ReadOnly:true,bodyStyle:{textAlign:al[71]}}));
        az("name", new bO({width:120,bodyData:"Name",headText:b9.Name}));
        az("Name", new aR({width:120,headText:b9.Name}));
        az(al[124], new bO({width:100,bodyData:al[124],headText:b9.OutlineNumber,ReadOnly:true}));
        var b8 = new H({width:32,headText:b9.StatusIcon});
        b8.addIcon(function(cc, cb) {
            if (cc.PercentComplete != 100) {
                return
            }
            var ca = this.createImage(cb);
            bq(ca, cb.imgPath + "icon_finished" + cb.imgType);
            if (cb.setTooltip) {
                cb.setTooltip(ca, function(cd) {
                    if (cd.bindObject == ca) {
                        return false
                    }
                    cd.bindObject = ca;
                    cd.setContent(cb.container.ownerDocument.createTextNode(C(b7.tooltipPercentComplete, aa(cc.Finish, b7.dateShowFormat))));
                    return true
                })
            }
            return ca
        }, al[121]);
        b8.addIcon(function(cc, cb) {
            if (!cc.ConstraintType || cc.ConstraintType <= 1) {
                return
            }
            var ca = this.createImage(cb);
            bq(ca, cb.imgPath + "icon_constraint" + cc.ConstraintType + cb.imgType);
            if (cb.setTooltip) {
                cb.setTooltip(ca, function(cd) {
                    if (cd.bindObject == ca) {
                        return false
                    }
                    cd.bindObject = ca;
                    var ce = C(b7.tooltipConstraint, [b7.constraintTypes[cc.ConstraintType],aa(cc.ConstraintDate, b7.dateShowFormat)]);
                    cd.setContent(cb.container.ownerDocument.createTextNode(ce));
                    return true
                })
            }
            return ca
        }, "ConstraintType,ConstraintDate");
        b8.addIcon(function(cc, cb) {
            if (!cc.Notes) {
                return
            }
            var ca = this.createImage(cb);
            bq(ca, cb.imgPath + "icon_notes" + cb.imgType);
            if (cb.setTooltip) {
                cb.setTooltip(ca, function(cd) {
                    if (cd.bindObject == ca) {
                        return false
                    }
                    cd.bindObject = ca;
                    var ce = aO(cc.elementType, al[120]).headText + ': "' + cc.Notes + '"';
                    cd.setContent(cb.container.ownerDocument.createTextNode(ce));
                    return true
                })
            }
            return ca
        }, al[120]);
        b8.addIcon(function(cc, cb) {
            if (!cc.HyperlinkAddress) {
                return
            }
            var cd = cb.container.ownerDocument.createElement("a");
            cd.href = cc.HyperlinkAddress;
            cd.target = "_blank";
            var ca = this.createImage(cb);
            bq(ca, cb.imgPath + "icon_hyperlink" + cb.imgType);
            cd.appendChild(ca);
            if (cb.setTooltip) {
                cb.setTooltip(ca, function(ce) {
                    if (ce.bindObject == ca) {
                        return false
                    }
                    ce.bindObject = ca;
                    var cf = cc.Hyperlink ? cc.Hyperlink : cc.HyperlinkAddress;
                    ce.setContent(cb.container.ownerDocument.createTextNode(cf));
                    return true
                })
            }
            return cd
        }, "HyperlinkAddress,Hyperlink");
        az("StatusIcon", b8);
        az("Duration", new G({width:60,bodyData:"Start,Finish",headText:b9.Duration}));
        az(al[127], new S({width:100,bodyData:al[127],headText:b9.Start,disableSummaryEdit:true}));
        az(al[128], new S({width:100,bodyData:al[128],headText:b9.Finish,disableSummaryEdit:true}));
        az(al[120], new U({width:100,bodyData:al[120],headText:b9.Notes}));
        az(al[115], new bM({width:120,bodyData:al[115],headText:b9.ClassName}));
        aI(al[115]).getOptions = function(ca, cb) {
            if (ca.Summary) {
                return{SummaryNormal:"SummaryNormal",SummaryArrow:"SummaryArrow"}
            }
            if (ca.Start && ca.Finish && ca.Start.valueOf() == ca.Finish.valueOf()) {
                return{MilestoneNormal:"MilestoneNormal",MilestoneCircle:"MilestoneCircle"}
            }
            return{TaskNormal:al[23],TaskImportant:"TaskImportant"}
        };
        az(al[119], new bM({width:120,bodyData:al[119],headText:b9.ConstraintType,options:window._SFGantt_config.SFGanttField.constraintTypes}));
        az(al[118], new S({width:100,bodyData:al[118],headText:b9.ConstraintDate}));
        az(al[112], new at({width:30,bodyData:al[112],headText:b9.Critical}));
        az(al[55], new bV({width:30,headText:b9.Selected}));
        az(al[147], new bO({width:100,bodyData:al[147],headText:b9.Resource,bodyFunc:function(ca, cd, ch) {
            var cc = [],cb = cd.getAssignments();
            for (var cf = 0; cf < cb.length; cf++) {
                var cg = cb[cf].getResource();
                if (cg) {
                    var ce = cg.Name;
                    if (cb[cf].Units != 1) {
                        ce += "[" + (cb[cf].Units * 100) + "%]"
                    }
                    cc.push(ce)
                }
            }
            ca.appendChild(ca.ownerDocument.createTextNode(cc.join(",")))
        },ReadOnly:true}));
        az(al[121], new ah({width:100,bodyData:al[121],headText:b9.PercentComplete}));
        az(al[117], new S({width:100,bodyData:al[117],headText:b9.ActualStart,disableSummaryEdit:true}));
        az(al[116], new S({width:100,bodyData:al[116],headText:b9.ActualFinish,disableSummaryEdit:true}));
        az("ActualDuration", new G({width:60,bodyData:"ActualStart,ActualFinish",headText:b9.ActualDuration}));
        az(al[111], new S({width:100,bodyData:al[111],headText:b9.BaselineStart,disableSummaryEdit:true}));
        az(al[110], new S({width:100,bodyData:al[110],headText:b9.BaselineFinish,disableSummaryEdit:true}));
        bO.linkFields = {};
        var b9 = b7.linkFieldTexts;
        aw(al[126], new bM({width:100,bodyData:al[126],headText:b9.Type,options:window._SFGantt_config.SFGanttField.linkTypes}));
        aw("FromTask", new V({width:100,bodyData:al[101],headText:b9.FromTask}));
        aw("ToTask", new V({width:100,bodyData:al[102],headText:b9.ToTask}))
    }

    ai(bO, {getField:aO,getFields:aN,setField:aM,getTaskFields:aL,getLinkFields:aK,getTaskField:aI,getLinkField:aH,setTaskField:az,setLinkField:aw,addTaskField:av,init:au});
    function at() {
        if (arguments.length <= 0) {
            return
        }
        bO.apply(this, arguments);
        this.inputData = this.bodyData
    }

    at.prototype = new bO();
    ai(at.prototype, {bodyFunc:function(b7, b8, ca) {
        if (!this.ReadOnly) {
            this.inputFunc(b7, b8, ca);
            return
        }
        var b9 = b8[this.bodyData];
        var cb = ca.gantt.config.getConfig(al[20]);
        b7.appendChild(b7.ownerDocument.createTextNode(b9 ? cb[1] : cb[0]))
    },inputFunc:function(b7, b9, cc) {
        var cb = this.inputData,cd = this;
        var ca = b9[this.bodyData];
        var b8 = b7.ownerDocument.createElement("input");
        b8.type = "checkbox";
        b7.appendChild(b8);
        b8.checked = !!ca;
        e(b8, al[63], function(cf) {
            var ce = bT(cf);
            if (ce && ce != 1) {
                return
            }
            b9.setProperty(cb, b8.checked);
            j(cf)
        })
    }});
    function ah() {
        bO.apply(this, arguments);
        this.inputFunc = this.bodyFunc
    }

    ah.prototype = new bO();
    ai(ah.prototype, {bodyFunc:function(ce, b8, b9) {
        var cc = b8[this.bodyData],cb = ce.ownerDocument;
        cc = (typeof(cc) != al[155]) ? cc : "0";
        var b7 = cb.createElement("div");
        ai(b7.style, {position:al[83],width:"90%",height:al[69],backgroundColor:al[64],border:al[19],textAlign:al[71]});
        ce.appendChild(b7);
        var cd = cb.createElement("div");
        ai(cd.style, {position:al[84],left:"0px",top:"0px",width:cc + "%",height:al[69],backgroundColor:"#999999",zIndex:2});
        b7.appendChild(cd);
        if (!this.ReadOnly) {
            var ca = cb.createElement("div");
            ai(ca.style, {position:al[84],left:cc + "%",top:"0px",width:"2px",height:al[69],backgroundColor:"blue",zIndex:3});
            B(ca, al[68]);
            bi(ca, u(this, this.onBarMove(b8, b7)), {container:b7});
            b7.appendChild(ca)
        }
        var cf = cb.createElement("span");
        ai(cf.style, {position:al[83],zIndex:4});
        cf.appendChild(cb.createTextNode(cc + "%"));
        b7.appendChild(cf)
    },onBarMove:function(b7, b8) {
        return function(cd, b9, cb) {
            var ca = Math.min(Math.max(b9[0], 0), b8.offsetWidth - 2);
            var cc = Math.round(100 * ca / (b8.offsetWidth - 2));
            if (cb != "end") {
                b8.firstChild.style.width = ca + "px";
                b8.firstChild.nextSibling.style.left = ca + "px";
                b8.lastChild.nodeValue = cc + "%"
            } else {
                b7.setProperty(this.bodyData, cc)
            }
        }
    }});
    function V() {
        bO.apply(this, arguments);
        this.ReadOnly = true
    }

    V.prototype = new bO();
    ai(V.prototype, {bodyFunc:function(b7, b8, b9) {
        var cb = b8[this.bodyData];
        if (!cb) {
            return
        }
        var ca = "(" + aO(cb.elementType, "UID").headText + " " + cb.UID + ") " + cb.Name;
        b7.appendChild(b7.ownerDocument.createTextNode(ca))
    }});
    function bV() {
        at.apply(this, arguments);
        this.bodyData = al[55]
    }

    bV.prototype = new bO();
    ai(bV.prototype, {bodyFunc:function(b7, b8, ca) {
        if (!this.ReadOnly) {
            this.inputFunc(b7, b8, ca);
            return
        }
        var b9 = b8[this.bodyData];
        var cb = ca.gantt.config.getConfig(al[20]);
        b7.appendChild(b7.ownerDocument.createTextNode(b9 ? cb[1] : cb[0]))
    },inputFunc:function(b7, b9, cc) {
        var cb = this.inputData,cd = this;
        var ca = b9[this.bodyData];
        var b8 = b7.ownerDocument.createElement("input");
        b8.type = "checkbox";
        b7.appendChild(b8);
        b8.checked = !!ca;
        e(b8, al[150], j);
        e(b8, al[152], j);
        e(b8, al[63], function(ce) {
            j(ce);
            b9.setProperty(al[55], b8.checked)
        })
    }});
    function U() {
        bO.apply(this, arguments);
        this.inputData = this.bodyData
    }

    U.prototype = new bO();
    ai(U.prototype, {inputFunc:function(b8, ca, cd) {
        var cc = this.inputData,ce = this;
        var cb = ca[cc];
        var b7 = bY(b8, cd.container);
        var b9 = b8.ownerDocument.createElement("textarea");
        ai(b9.style, {position:al[84],left:b7[0] + "px",top:b7[1] + "px",width:(this.width - 2) + "px",height:"100px",border:al[19],overflow:al[81],zIndex:100});
        e(b9, al[63], j);
        e(b9, al[150], j);
        e(b9, al[152], function(cf) {
            c(b9.cml);
            b9.cml = e(b9, al[42], j);
            j(cf)
        });
        e(b9, al[22], j);
        b9.cml = e(b9, al[42], k);
        b9.value = (typeof(cb) != al[155]) ? cb : "";
        e(b9, al[21], function(cg) {
            if (cg.keyCode == 27) {
                var cf = ca[cc];
                b9.value = (typeof(cf) != al[155]) ? cf : ""
            }
        });
        e(b9, al[129], function() {
            ca.setProperty(cc, b9.value)
        });
        e(b9, "blur", function() {
            h(b9)
        });
        cd.container.appendChild(b9);
        b9.focus()
    }});
    function S() {
        bO.apply(this, arguments);
        this.inputData = this.bodyData
    }

    S.prototype = new bO();
    ai(S.prototype, {bodyFunc:function(b7, b8, b9) {
        var ca = b8[this.bodyData] ? aa(b8[this.bodyData], b9.gantt.config.getConfig("SFGanttField/dateShowFormat")) : "";
        b7.appendChild(b7.ownerDocument.createTextNode(ca))
    },inputFunc:function(b7, ca, cd) {
        if (this.disableSummaryEdit && ca.Summary) {
            h(b7, true);
            this.showBody(b7, ca, cd);
            return
        }
        var cc = this.inputData,ce = this;
        var cb = ca[ce.inputData];
        cb = (typeof(cb) != al[155]) ? cb : new Date();
        var b8 = bO.createInput(b7, ce, cd);
        var b9 = cd.gantt.config.getConfig(al[18]);
        b8.value = aa(cb, b9.dateInputFormat);
        e(b8, al[21], function(cg) {
            if (cg.keyCode == 27) {
                var cf = ca[ce.inputData];
                b8.value = aa(cf, b9.dateInputFormat)
            }
            if (cg.keyCode == 13) {
                if (b8.value) {
                    var cf = ac(b8.value);
                    if (cf && !isNaN(cf)) {
                        ca.setProperty(cc, cf);
                        h(b7, true);
                        ce.showBody(b7, ca, cd)
                    } else {
                        if (b9.noticeWrongFormat) {
                            alert(b9.noticeWrongFormat)
                        }
                        b8.focus()
                    }
                } else {
                    ca.setProperty(cc, null)
                }
            }
        });
        e(b8, al[129], function() {
            if (b8.value) {
                var cf = ac(b8.value);
                if (cf && !isNaN(cf)) {
                    ca.setProperty(cc, cf)
                } else {
                    if (b9.noticeWrongFormat) {
                        alert(b9.noticeWrongFormat)
                    }
                    b8.focus()
                }
            } else {
                ca.setProperty(cc, null)
            }
        });
        b7.appendChild(b8);
        b8.focus()
    }});
    function G() {
        bO.apply(this, arguments);
        this.ReadOnly = true
    }

    G.prototype = new bO();
    ai(G.prototype, {bodyFunc:function(ch, cc, ce) {
        var cb = this.bodyData.split(","),b8 = cc[cb[0]],cg = cc[cb[1]],cd = 0;
        if (!b8 || !cg) {
            return
        }
        var b7 = ce.gantt.data.getCalendar(),b9 = b8,ci = -1;
        while (b9 < cg) {
            var ca = b7.getWorkTime(b9);
            var cf = [parseInt(ca[0] / 1000 / 60 / 60 / 24),parseInt(ca[1] / 1000 / 60 / 60 / 24)];
            cd += cf[1] - cf[0] + 1;
            if (ci == cf[0]) {
                cd--
            }
            ci = cf[1];
            b9 = ca[1]
        }
        ch.appendChild(ch.ownerDocument.createTextNode(C(ce.gantt.config.getConfig("SFGanttField/durationFormat"), cd)))
    }});
    function bM() {
        bO.apply(this, arguments);
        this.inputData = this.bodyData
    }

    bM.prototype = new bO();
    ai(bM.prototype, {_getOptions:function(b8, cb) {
        var b7 = this.getOptions(b8, cb);
        if (b7) {
            if (!b7.length) {
                var ca,b9 = b7;
                b7 = [];
                for (ca in b9) {
                    if (typeof(b9[ca]) == al[154]) {
                        b7.push([ca,b9[ca]])
                    }
                }
            }
        }
        return b7
    },getOptions:function() {
        return this.options
    },bodyFunc:function(cd, b8, b9) {
        var ce = this.inputData,ca = this,cf = this._getOptions(b8, b9),cb = cd.ownerDocument;
        var cc = b8[ce];
        for (var b7 = 0; b7 < cf.length; b7++) {
            if (typeof(cf[b7]) == al[159] && cf[b7].length > 1 && cf[b7][0] == cc) {
                cd.appendChild(cb.createTextNode(cf[b7][1]));
                return
            }
            if (typeof(cf[b7]) != al[159] && b7 == cc) {
                cd.appendChild(cb.createTextNode(cf[b7]));
                return
            }
        }
        cd.appendChild(cb.createTextNode((typeof(cc) != al[155]) ? cc : ""))
    },inputFunc:function(ce, b8, b9) {
        var cf = this.inputData,ca = this,cg = this._getOptions(b8, b9);
        var cd = b8[cf];
        var cb = ce.ownerDocument.createElement("select");
        e(cb, al[63], j);
        e(cb, al[150], j);
        e(cb, al[152], function(ch) {
            c(cb.cml);
            cb.cml = e(cb, al[42], j);
            j(ch)
        });
        e(cb, al[22], j);
        cb.cml = e(cb, al[42], k);
        for (var b7 = 0; b7 < cg.length; b7++) {
            var cc = cg[b7];
            if (typeof(cc) != al[159]) {
                cc = [b7,cc]
            }
            cb.options.add(new Option(cc[1], cc[0]))
        }
        cb.value = (typeof(cd) != al[155]) ? cd : "";
        e(cb, al[129], function() {
            b8.setProperty(cf, cb.value)
        });
        ce.appendChild(cb);
        cb.focus()
    }});
    function aR() {
        bO.apply(this, arguments);
        this.bodyData = "Name,Summary,Collapse";
        this.inputData = "Name"
    }

    aR.prototype = new bO();
    ai(aR.prototype, {bodyFunc:function(b7, b9, ca) {
        var cc = b7.ownerDocument;
        if (ca) {
            for (var cb = b9; cb; cb = cb.getParent()) {
                if (cb == b9 && b9.Summary) {
                    continue
                }
                b7.appendChild(cc.createTextNode(aj("6Qmm")))
            }
        }
        if (b9.Summary && ca) {
            var b8 = this.getCollapseImg(ca.gantt, b9.Collapse);
            b7.appendChild(b8);
            e(b8, al[63], function(cd) {
                j(cd);
                b9.setProperty(al[114], !b9.Collapse)
            })
        }
        b7.appendChild(cc.createTextNode((b9.Name ? b9.Name : "")))
    },getCollapseImg:function(b8, b9) {
        var b7 = b8.container.ownerDocument.createElement("img");
        bq(b7, b8.imgPath + "collapse_" + (b9 ? "close" : "open") + b8.imgType);
        ai(b7.style, {width:"9px",height:"9px",margin:"1px",cursor:al[158]});
        return b7
    }});
    function H() {
        bO.apply(this, arguments);
        this.ReadOnly = true;
        this.bodyDatas = [];
        this.icons = []
    }

    H.prototype = new bO();
    ai(H.prototype, {headFunc:function(b7, b9) {
        var b8 = b7.ownerDocument.createElement("img");
        ai(b8, {width:16,height:16});
        bq(b8, b9.gantt.imgPath + "icon_taskstatus" + b9.gantt.imgType);
        b7.appendChild(b8)
    },bodyFunc:function(b7, ca, cb) {
        b7.vAlign = "middle";
        var b8;
        for (var b9 = 0; b9 < this.icons.length; b9++) {
            if (b8 = this.icons[b9].showHandle.apply(this, [ca,cb.gantt])) {
                b7.appendChild(b8)
            }
        }
    },createImage:function(b8) {
        var b7 = b8.container.ownerDocument.createElement("img");
        ai(b7, {width:16,height:16,border:0});
        return b7
    },addIcon:function(b9, ca) {
        if (ca) {
            var b7 = ca.split(",");
            for (var b8 = b7.length - 1; b8 >= 0; b8--) {
                if (!z(this.bodyDatas, b7[b8])) {
                    this.bodyDatas.push(b7[b8])
                }
            }
            this.bodyData = this.bodyDatas.join(",")
        }
        this.icons.push({showHandle:b9})
    }});
    function P() {
    }

    ai(P.prototype, {initialize:function() {
        return false
    },show:function() {
    },onScale:function() {
    },onUpdate:function() {
    },onMouseDown:function() {
    },getTooltip:function() {
    },remove:function() {
    },depose:function() {
    }});
    function aU() {
    }

    aU.prototype = new P();
    ai(aU.prototype, {initialize:function(b7) {
        ai(this, {control:b7,name:"MilestoneHead"});
        return true
    },show:function(b8, ca) {
        var b7 = b8.Start.valueOf(),cd = b8.Finish.valueOf();
        if (b7 != cd) {
            return
        }
        var cb = this.control,b9 = cb.gantt;
        var cc = ca[this.name] = ca.taskDiv.ownerDocument.createElement("img");
        cc.style.cssText = al[17] + (cb.taskHeight - 1) + al[16] + (-Math.floor((cb.taskHeight - 1) / 2)) + al[15] + Math.ceil(cb.taskPadding / 2) + al[14];
        var cf = b9.imgPath + "task_head_3" + b9.imgType;
        var ce = cb.getTaskStyle(b8);
        if (ce.milestoneImage) {
            cf = ce.milestoneImage
        }
        bq(cc, cf);
        ca.taskDiv.appendChild(cc)
    },getTooltip:function(b8, b7, ca, cc) {
        if (cc.target != b7[this.name] || !this.control.taskNoticeFields) {
            return false
        }
        var cb = this.control;
        if (ca.bindObject == b8 && ca.bindType == al[148]) {
            return false
        }
        var b9 = cb.getTaskTooltipContent(b8, cb.tooltipTitle.milestone, cb.taskNoticeFields.split(","));
        ca.bindObject = b8;
        ca.bindType = al[148];
        ca.setContent(b9);
        return true
    },onUpdate:function(b9, b7, cb) {
        var b8 = this.control.gantt,cd = b9.Start.valueOf(),ca = b9.Finish.valueOf();
        if (cd != ca) {
            this.remove(b9, b7);
            return
        }
        if (z(cb, al[115])) {
            this.remove(b9, b7);
            this.show(b9, b7);
            return
        }
        var cc = b7[this.name];
        if (!cc) {
            this.show(b9, b7)
        }
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    function aJ() {
    }

    aJ.prototype = new P();
    ai(aJ.prototype, {initialize:function(b7) {
        ai(this, {control:b7,name:"SummaryHead"});
        return true
    },show:function(b8, cb, cc) {
        var b7 = b8.Start.valueOf(),ch = b8.Finish.valueOf(),ci = cb.taskDiv.ownerDocument;
        if (b7 == ch || !b8.Summary) {
            return
        }
        var cf = this.control,ca = cf.gantt,cg = cb[this.name] = [],ck = ca.imgPath + "task_head_2" + ca.imgType;
        cc = cc ? cc : ca.getScale();
        var cj = cf.getTaskStyle(b8);
        if (cj.summaryImage) {
            ck = cj.summaryImage
        }
        for (var ce = 0; ce < 2; ce++) {
            var b9 = -Math.floor((cf.taskHeight - 1) / 2);
            if (ce > 0) {
                b9 += (ch - b7) / cc
            }
            var cd = ci.createElement("img");
            cg.push(cd);
            cd.style.cssText = al[17] + (cf.taskHeight - 1) + al[16] + b9 + al[15] + Math.ceil(cf.taskPadding / 2) + al[14];
            bq(cd, ck);
            cb.taskDiv.appendChild(cd)
        }
    },onUpdate:function(b9, b7, cc) {
        var b8 = this.control.gantt,ce = b9.Start.valueOf(),ca = b9.Finish.valueOf(),cb = this.control;
        if (ce == ca || !b9.Summary) {
            this.remove(b9, b7);
            return
        }
        var cd = b7[this.name];
        if (!cd) {
            this.show(b9, b7)
        } else {
            if (z(cc, al[127]) || z(cc, al[128])) {
                b7[this.name][1].style.left = (-Math.floor((cb.taskHeight - 1) / 2) + (ca - ce) / b8.getScale()) + "px"
            }
        }
    },onScale:function(b8, b7, b9) {
        var ca = b7[this.name];
        if (ca) {
            ca[1].style.left = (-Math.floor((this.control.taskHeight - 1) / 2) + (b8.Finish - b8.Start) / b9) + "px"
        }
    },remove:function(b8, b7) {
        var b9 = b7[this.name];
        if (b9) {
            h(b9[0]);
            h(b9[1])
        }
        delete b7[this.name]
    }});
    function t() {
    }

    t.prototype = new P();
    ai(t.prototype, {initialize:function(b7) {
        ai(this, {control:b7,name:"BarSummary"});
        return true
    },show:function(b9, cb, cc) {
        var b8 = b9.Start.valueOf(),ce = b9.Finish.valueOf();
        if (b8 >= ce || !b9.Summary) {
            return
        }
        var cd = this.control,ca = cd.gantt,b7 = cb.taskDiv.ownerDocument.createElement("div");
        cc = cc ? cc : ca.getScale();
        cb[this.name] = b7;
        b7.style.cssText = al[13] + ((ce - b8) / cc) + al[15] + Math.ceil(cd.taskPadding / 2) + al[28] + Math.floor(cd.taskHeight / 2 - 1) + "px;";
        var cf = cd.getTaskStyle(b9);
        if (cf.summaryBarStyle) {
            ai(b7.style, cf.summaryBarStyle)
        }
        cb.taskDiv.appendChild(b7)
    },getTooltip:function(b8, b7, ca, cc) {
        if (cc.target != b7[this.name] || !this.control.taskNoticeFields) {
            return false
        }
        var cb = this.control;
        if (ca && ca.bindObject == b8 && ca.bindType == al[148]) {
            return false
        }
        var b9 = cb.getTaskTooltipContent(b8, cb.tooltipTitle.summary, cb.taskNoticeFields.split(","));
        ca.bindObject = b8;
        ca.bindType = al[148];
        ca.setContent(b9);
        return true
    },onUpdate:function(b9, b7, cc) {
        var b8 = this.control.gantt,ce = b9.Start.valueOf(),ca = b9.Finish.valueOf();
        if (ce >= ca || !b9.Summary) {
            this.remove(b9, b7);
            return
        }
        var cd = b7[this.name];
        if (!cd) {
            this.show(b9, b7, b8.getScale())
        } else {
            var cb = cd.style;
            if (z(cc, al[127]) || z(cc, al[128])) {
                cb.width = ((ca - ce) / b8.getScale()) + "px"
            }
        }
    },onScale:function(b8, b7, b9) {
        var ca = b7[this.name];
        if (ca) {
            ca.style.width = ((b8.Finish - b8.Start) / b9) + "px"
        }
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    function ap() {
    }

    ap.prototype = new P();
    ai(ap.prototype, {initialize:function(b7) {
        ai(this, {control:b7,name:"BarNormal"});
        return true
    },show:function(b9, cb, cc) {
        var b8 = b9.Start.valueOf(),ce = b9.Finish.valueOf();
        if (b8 >= ce || b9.Summary) {
            return
        }
        var cd = this.control,ca = cd.gantt,b7 = cb.taskDiv.ownerDocument.createElement("div");
        cc = cc ? cc : ca.getScale();
        cb[this.name] = b7;
        var cf = cd.taskHeight;
        if (ca.isTracking) {
            cf = cf / 2
        }
        b7.style.cssText = al[13] + ((ce - b8) / cc) + al[15] + Math.ceil(cd.taskPadding / 2) + al[28] + cf + "px;cursor:move;";
        var cg = cd.getTaskStyle(b9);
        if (cg.barStyle) {
            ai(b7.style, cg.barStyle)
        }
        cb.taskDiv.appendChild(b7)
    },onUpdate:function(b9, b7, cc) {
        var b8 = this.control.gantt,ce = b9.Start.valueOf(),ca = b9.Finish.valueOf();
        if (ce >= ca || b9.Summary) {
            this.remove(b9, b7);
            return
        }
        var cd = b7[this.name];
        if (!cd) {
            this.show(b9, b7)
        } else {
            if (z(cc, al[115])) {
                this.remove(b9, b7);
                this.show(b9, b7);
                return
            }
            var cb = cd.style;
            if (z(cc, al[127]) || z(cc, al[128])) {
                cd.style.left = "0px";
                cb.width = ((ca - ce) / b8.getScale()) + "px"
            }
        }
    },getTooltip:function(b8, b7, ca, cc) {
        if (cc.target != b7[this.name] || !this.control.taskNoticeFields) {
            return false
        }
        var cb = this.control;
        if (ca && ca.bindObject == b8 && ca.bindType == al[148]) {
            return false
        }
        var b9 = cb.getTaskTooltipContent(b8, cb.tooltipTitle.task, cb.taskNoticeFields.split(","));
        ca.bindObject = b8;
        ca.bindType = al[148];
        ca.setContent(b9);
        return true
    },onScale:function(b8, b7, b9) {
        var ca = b7[this.name];
        if (ca) {
            ca.style.width = ((b8.Finish - b8.Start) / b9) + "px"
        }
    },onMouseDown:function(b8, b7, ca) {
        if (ca.target != b7[this.name]) {
            return
        }
        b0(b7[this.name], al[63], []);
        var b9 = this.control;
        b0(this.control, "dragstart", [b8]);
        new q(b9.div, u(this, this.onMove), {interval:32}).onMouseDown(ca)
    },onMove:function(cp, cg, ca) {
        var ch = this.control,cr = ch.gantt,cq = ch.dragTask,cl = cr.getElementDrawObj(cq)[ch.proTag];
        var co = [cg[0] - cp[0],cg[1] - cp[1]];
        if (!ch.dragType) {
            if (Math.sqrt(Math.pow(co[0], 2) + Math.pow(co[1], 2)) < 5) {
                return
            }
            if (co[0] == 0 || co[1] / co[0] > 2 && !ch.gantt.readOnly && ch.gantt.data.canAddLink(cq) && !ch.gantt.disableAddLink && !ch.disableDragAddLink) {
                ch.dragType = al[146];
                ch.startHeight = cl.taskDiv.offsetTop;
                var cf = {Type:1,PredecessorTask:cq};
                ch.dragLink = cf;
                if (cr.getTooltip) {
                    var cc = cr.getTooltip();
                    cc.setContent(ch.getLinkTooltipContent(cf));
                    cc.show([0,0])
                }
            } else {
                if ((co[1] == 0 || co[0] / co[1] > 2) && !cr.readOnly && cq.canSetProperty(al[127]) && !ch.gantt.disableUpdateTask && !ch.disableDragMoveTask) {
                    ch.dragType = al[127];
                    if (cr.getTooltip) {
                        var cc = cr.getTooltip();
                        cc.setContent(ch.getTaskTooltipContent(cq, ch.tooltipTitle.task, [al[127],al[128]]));
                        var cs = bY(cl.taskDiv, cr.container);
                        cs[1] += cr.getElementHeight(cq);
                        cc.show(cs)
                    }
                    b0(cr, "taskbardragstart", [cq])
                } else {
                    return
                }
            }
        }
        if (ch.dragType == al[127]) {
            var ce = co[0] * cr.getScale();
            var cd = new Date(cq.Start.valueOf() + ce),ck = new Date(cq.Finish.valueOf() + ce);
            if (ca != "end") {
                var cb = cg[0] + cr.getMapPanel().offsetLeft;
                if (cb <= 0 || cb > cr.getLayout(al[75]).offsetWidth) {
                    this.dmDir = (cb <= 0) ? -1 : 1;
                    this.lastOffset = co[0];
                    if (!this.dmt) {
                        this.dmt = window.setInterval(u(this, this.onTime), 32)
                    }
                } else {
                    if (this.dmt) {
                        window.clearInterval(this.dmt);
                        delete this.dmt
                    }
                }
                cl[this.name].style.left = cr.getMapPanelPosition(cd) - cr.getTimePanelPosition(cq.Start) + "px";
                if (cr.getTooltip) {
                    cr.getTooltip().setContent(ch.getTaskTooltipContent({Start:cd,Finish:ck}, ch.tooltipTitle.task, [al[127],al[128]]))
                }
            } else {
                if (this.dmt) {
                    window.clearInterval(this.dmt);
                    delete this.dmt
                }
                cq.setProperty(al[128], ck);
                cq.setProperty(al[127], cd);
                b0(cr, "taskbardragend", [cq]);
                delete ch.dragType
            }
        } else {
            if (ch.dragDivs) {
                var cj;
                while (cj = ch.dragDivs.pop()) {
                    h(cj)
                }
            }
            if (ca != "end") {
                var ce = bY(cl.taskDiv, ch.div);
                var cn = [];
                cn.push([cp[0] + ce[0],cp[1]]);
                cn.push([cp[0] + ce[0],cg[1]]);
                cn.push([cg[0],cg[1]]);
                ch.dragDivs = this.getLinkPaths(cl.taskDiv.ownerDocument, cn, "#FF0000");
                for (var cm = 0; cm < ch.dragDivs.length; cm++) {
                    ch.div.appendChild(ch.dragDivs[cm])
                }
                var b9 = cg[1] - ch.startHeight;
                var ci = cq;
                if (b9 < 0) {
                    ci = ci.getPreviousViewTask()
                }
                while (ci) {
                    var ct = b9 + (b9 < 0 ? 1 : -1) * cr.getElementHeight(ci);
                    if (b9 * ct <= 0) {
                        break
                    }
                    ci = b9 > 0 ? ci.getNextViewTask() : ci.getPreviousViewTask();
                    b9 = ct
                }
                if (ci == cq) {
                    ci = null
                }
                if (ci) {
                    var b8 = cr.getElementDrawObj(ci)[ch.proTag].taskDiv;
                    var b7 = bY(b8, ch.div);
                    if (cg[0] < b7[0] - 10 || cg[0] > b7[0] + b8.offsetWidth + 10) {
                        ci = null
                    }
                }
                if (ch.dragLink.SuccessorTask != ci) {
                    ch.dragLink.SuccessorTask = ci;
                    if (cr.getTooltip) {
                        cr.getTooltip().setContent(ch.getLinkTooltipContent(ch.dragLink))
                    }
                }
            } else {
                if (ch.dragLink && ch.dragLink.SuccessorTask) {
                    ch.dragLink.SuccessorTask.addPredecessorLink(cq, 1)
                }
                delete ch.dragType
            }
        }
    },onTime:function() {
        var ca = this.control,b9 = ca.gantt,b8 = ca.dragTask,b7 = b9.getElementDrawObj(b8)[ca.proTag];
        b9.setStartTime(new Date(b9.getStartTime().valueOf() + b9.getScale() * 6 * this.dmDir));
        this.lastOffset += 6 * this.dmDir;
        var cb = new Date(b8.Start.valueOf() + this.lastOffset * b9.getScale());
        b7[this.name].style.left = b9.getMapPanelPosition(cb) - b9.getTimePanelPosition(b8.Start) + "px"
    },getLinkPaths:function(ca, b9, b7) {
        var cb = [];
        b7 = b7 ? b7 : "blue";
        for (var b8 = 1; b8 < b9.length; b8++) {
            var cc = ca.createElement("div");
            ai(cc.style, {position:al[84],fontSize:"0px"});
            if (b9[b8 - 1][0] == b9[b8][0]) {
                ai(cc.style, {borderRight:al[72] + b7 + "",height:Math.abs(b9[b8][1] - b9[b8 - 1][1]) + "px",width:0 + "px",left:(b9[b8][0] - 1) + "px",top:(Math.min(b9[b8][1], b9[b8 - 1][1])) + "px"})
            } else {
                if (b9[b8 - 1][1] == b9[b8][1]) {
                    ai(cc.style, {borderTop:al[72] + b7 + "",width:Math.abs(b9[b8][0] - b9[b8 - 1][0]) + "px",height:0 + "px",left:(Math.min(b9[b8][0], b9[b8 - 1][0])) + "px",top:(b9[b8][1]) + "px"})
                }
            }
            cb.push(cc)
        }
        return cb
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    function bb() {
    }

    bb.prototype = new P();
    ai(bb.prototype, {initialize:function(b7) {
        ai(this, {control:b7,name:"Text"});
        this.taskBarField = aI(b7.taskBarField);
        return true
    },show:function(b9, cb, cc) {
        var b8 = b9.Start.valueOf(),ce = b9.Finish.valueOf();
        var cd = this.control,ca = cd.gantt,cf = ca.getElementHeight(b9),b7 = cb.taskDiv.ownerDocument.createElement("div");
        cc = cc ? cc : ca.getScale();
        b7.noWrap = true;
        cb[this.name] = b7;
        this.taskBarField.showBody(b7, b9, cd);
        b7.style.cssText = "position:absolute;white-space:nowrap;height:" + (cf - 1) + "px;width:1px;z-index:100;font-weight:bolder;top:" + Math.ceil((ca.itemHeight - ca.fontSize) / 2) + "px;font-size:" + ca.fontSize + al[16] + ((ce - b8) / cc + 10) + "px";
        cb.taskDiv.appendChild(b7)
    },onUpdate:function(cb, cd, ca) {
        var b9 = cb.Start.valueOf(),cf = cb.Finish.valueOf(),ce = this.control,cc = ce.gantt,cg = cc.getElementHeight(cb);
        var b8 = cd[this.name];
        if (!b8) {
            this.show(cb, cd)
        } else {
            var b7 = b8.style;
            if (z(ca, al[127]) || z(ca, al[128])) {
                b7.left = ((cf - b9) / cc.getScale() + 10) + "px"
            }
            if (this.taskBarField.checkUpdate(ca)) {
                this.taskBarField.showBody(b8, cb, ce)
            }
        }
    },onScale:function(b8, b7, b9) {
        var ca = b7[this.name];
        if (ca) {
            ca.style.left = ((b8.Finish - b8.Start) / b9 + 10) + "px"
        }
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    function b5() {
    }

    b5.prototype = new P();
    ai(b5.prototype, {initialize:function(b7) {
        if (b7.gantt.readOnly) {
            return false
        }
        ai(this, {control:b7,name:"Resize"});
        return true
    },show:function(b9, cb, cc) {
        var b8 = b9.Start.valueOf(),ce = b9.Finish.valueOf(),cd = this.control,ca = cd.gantt,cf = cd.taskHeight;
        cc = cc ? cc : ca.getScale();
        if (b8 >= ce || b9.Summary || ca.readOnly || !b9.canSetProperty(al[128]) || ca.disableUpdateTask || cd.disableDragResizeTask) {
            return
        }
        var b7 = cb.taskDiv.ownerDocument.createElement("div");
        cb[this.name] = b7;
        b7.style.cssText = al[17] + (cd.taskHeight - 1) + al[16] + ((ce - b8) / cc - Math.floor((cd.taskHeight - 1) / 2)) + al[15] + Math.ceil(cd.taskPadding / 2) + al[28] + (cf / 2 + 2) + "px;z-index:150;font-size:0px;cursor:w-resize;";
        cb.taskDiv.appendChild(b7)
    },onUpdate:function(cb, cd, ca) {
        var b9 = cb.Start.valueOf(),cf = cb.Finish.valueOf(),ce = this.control,cc = ce.gantt,cg = cc.getElementHeight(cb);
        if (b9 >= cf || cb.Summary || cc.readOnly || !cb.canSetProperty(al[128]) || cc.disableUpdateTask || ce.disableDragResizeTask) {
            this.remove(cb, cd);
            return
        }
        var b8 = cd[this.name];
        if (!b8) {
            this.show(cb, cd)
        } else {
            var b7 = b8.style;
            if (z(ca, al[127]) || z(ca, al[128])) {
                b7.left = ((cf - b9) / cc.getScale() - Math.floor((ce.taskHeight - 1) / 2)) + "px"
            }
        }
    },onScale:function(b8, b7, b9) {
        var ca = b7[this.name];
        if (ca) {
            ca.style.left = ((b8.Finish - b8.Start) / b9) + "px"
        }
    },onMouseDown:function(b8, b7, ca) {
        if (ca.target != b7[this.name]) {
            return
        }
        var b9 = this.control;
        new q(b9.div, u(this, this.onResizeMove)).onMouseDown(ca)
    },onResizeMove:function(b8, ce, cf) {
        var cc = this.control,ca = cc.gantt,b9 = cc.dragTask,b7 = ca.getElementDrawObj(b9)[cc.proTag].BarNormal,cb = ca.getScale();
        if (cf == al[149]) {
            if (ca.getTooltip) {
                var ch = ca.getTooltip();
                ch.setContent(cc.getTaskTooltipContent(b9, cc.tooltipTitle.task, [al[127],al[128]]));
                var cd = bY(b7, ca.container);
                cd[1] += ca.getElementHeight(b9);
                ch.show(cd)
            }
        }
        var cg = b9.Finish.valueOf() + [ce[0] - b8[0]] * cb;
        cg = Math.max(b9.Start.valueOf(), cg);
        if (cf != "end") {
            b7.style.width = (cg - b9.Start.valueOf()) / cb + "px";
            if (ca.getTooltip) {
                ca.getTooltip().setContent(cc.getTaskTooltipContent({Start:b9.Start,Finish:new Date(cg)}, cc.tooltipTitle.task, [al[127],al[128]]))
            }
        } else {
            if (!b9.setProperty(al[128], new Date(cg))) {
                b7.style.width = (b9.Finish.valueOf() - b9.Start.valueOf()) / cb + "px"
            }
        }
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    function I() {
    }

    I.prototype = new P();
    ai(I.prototype, {initialize:function(b7) {
        if (b7.gantt.readOnly) {
            return false
        }
        ai(this, {control:b7,name:"PercentChange"});
        return true
    },show:function(b9, cc) {
        var b8 = b9.Start.valueOf(),cf = b9.Finish.valueOf(),ce = b9.PercentComplete,cd = this.control,cb = cd.gantt,cg = cd.taskHeight;
        if (b8 >= cf || b9.Summary || cb.readOnly || !b9.canSetProperty(al[121]) || cb.disableUpdateTask || cd.disableDragChangePercent) {
            return
        }
        ce = ce ? ce : 0;
        var ca = (cf - b8) / cb.getScale() * ce / 100;
        var b7 = cc.taskDiv.ownerDocument.createElement("div");
        cc[this.name] = b7;
        b7.style.cssText = al[17] + (Math.floor((cd.taskHeight - 1) / 2)) + al[16] + ca + al[15] + Math.ceil(cd.taskPadding / 2) + al[28] + (cg + 2) + "px;z-index:250;font-size:0px;cursor:col-resize;";
        cc.taskDiv.appendChild(b7)
    },onUpdate:function(cb, cd, ca) {
        var b9 = cb.Start.valueOf(),cg = cb.Finish.valueOf(),cf = cb.PercentComplete,ce = this.control,cc = ce.gantt,ch = cc.getElementHeight(cb);
        if (b9 >= cg || cb.Summary || cc.readOnly || !cb.canSetProperty(al[121]) || cc.disableUpdateTask || ce.disableDragChangePercent) {
            this.remove(cb, cd);
            return
        }
        var b8 = cd[this.name];
        if (!b8) {
            this.show(cb, cd)
        } else {
            var b7 = b8.style,cf = cf ? cf : 0;
            if (z(ca, al[121]) || z(ca, al[127]) || z(ca, al[128])) {
                b7.left = (cg - b9) / cc.getScale() * cf / 100 + "px"
            }
        }
    },onScale:function(b8, b7, ca) {
        var cb = b7[this.name];
        var b9 = b8.PercentComplete;
        b9 = b9 ? b9 : 0;
        if (cb) {
            cb.style.left = (b8.Finish - b8.Start) / this.control.gantt.getScale() * b9 / 100 + "px"
        }
    },onMouseDown:function(b8, b7, ca) {
        if (ca.target != b7[this.name]) {
            return
        }
        var b9 = this.control;
        new q(b9.div, u(this, this.onPercentMove)).onMouseDown(ca)
    },onPercentMove:function(b9, cg, ci) {
        var ce = this.control,cc = ce.gantt,ca = ce.dragTask,cd = cc.getElementDrawObj(ce.dragTask)[ce.proTag],cb = cd.Percent;
        if (!cb) {
            return
        }
        var ch = ca.PercentComplete,b8 = ca.Start,cj = ca.Finish,cl = (cj - b8) / cc.getScale();
        if (!ch) {
            ch = 0
        }
        if (ci == al[149]) {
            if (cc.getTooltip) {
                var ck = cc.getTooltip();
                ck.setContent(ce.getTaskTooltipContent(ca, ce.tooltipTitle.progress, ["name",al[121]]));
                var cf = bY(cd.BarNormal, cc.container);
                cf[1] += cc.getElementHeight(ca);
                ck.show(cf)
            }
        }
        if (ci != "end") {
            ch = Math.round(ch + (cg[0] - b9[0]) * 100 / cl);
            ch = Math.min(Math.max(0, ch), 100);
            cb.style.width = (cj - b8) / cc.getScale() * ch / 100 + "px";
            if (cc.getTooltip) {
                cc.getTooltip().setContent(ce.getTaskTooltipContent({PercentComplete:ch,Name:ca.Name}, ce.tooltipTitle.progress, ["name",al[121]]))
            }
        } else {
            var b7 = parseInt(ch + (cg[0] - b9[0]) * 100 / cl);
            b7 = Math.min(Math.max(0, b7), 100);
            if (!ca.setProperty(al[121], b7)) {
                cb.style.width = ch + "%"
            }
        }
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    function ay() {
    }

    ay.prototype = new P();
    ai(ay.prototype, {initialize:function(b7) {
        ai(this, {control:b7,name:al[12]});
        return true
    },show:function(ca, cc) {
        var b9 = ca.Start.valueOf(),cf = ca.Finish.valueOf();
        if (b9 >= cf || ca.Summary) {
            return
        }
        var cd = this.control,cb = cd.gantt,b7 = cc.taskDiv.ownerDocument.createElement("div");
        var cg = cd.taskHeight,ce = ca.PercentComplete;
        if (cb.isTracking) {
            cg = Math.floor(cg / 2)
        }
        ce = ce ? ce : 0;
        var b8 = (cf - b9) / cb.getScale() * ce / 100;
        b7.style.cssText = "position:absolute;font-size:0px;z-index:200;left:0px;width:" + b8 + al[15] + Math.ceil(cd.taskPadding / 2 + cg / 4 + 1) + al[28] + (cg / 2) + "px;";
        var ch = cd.getTaskStyle(ca);
        if (ch.percentBarStyle) {
            ai(b7.style, ch.percentBarStyle)
        }
        cc.taskDiv.appendChild(b7);
        cc[this.name] = b7
    },getTooltip:function(b8, b7, ca, cc) {
        if (cc.target != b7[this.name] || !this.control.taskProgressNoticeFields) {
            return false
        }
        var cb = this.control;
        if (ca && ca.bindObject == b8 && ca.bindType == al[12]) {
            return false
        }
        var b9 = cb.getTaskTooltipContent(b8, cb.tooltipTitle.progress, cb.taskProgressNoticeFields.split(","));
        ca.bindObject = b8;
        ca.bindType = al[12];
        ca.setContent(b9);
        return true
    },onUpdate:function(b8, b7, cc) {
        var ce = b8.Start.valueOf(),b9 = b8.Finish.valueOf();
        if (ce >= b9 || b8.Summary) {
            this.remove(b8, b7);
            return
        }
        var cd = b7[this.name];
        if (!cd) {
            this.show(b8, b7)
        } else {
            var ca = cd.style;
            if (z(cc, al[121]) || z(cc, al[127]) || z(cc, al[128])) {
                var cb = b8.PercentComplete;
                cb = cb ? cb : 0;
                ca.width = (b9 - ce) / this.control.gantt.getScale() * cb / 100 + "px"
            }
        }
    },onScale:function(b8, b7, ca) {
        var cb = b7[this.name];
        var b9 = b8.PercentComplete;
        b9 = b9 ? b9 : 0;
        if (cb) {
            cb.style.width = (b8.Finish - b8.Start) / this.control.gantt.getScale() * b9 / 100 + "px"
        }
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    function aF() {
    }

    aF.prototype = new P();
    ai(aF.prototype, {initialize:function(b7) {
        if (!b7.gantt.isTracking) {
            return false
        }
        ai(this, {control:b7,name:"BarTrack"});
        return true
    },show:function(b9, cb, cc) {
        if (!b9.BaselineStart || !b9.BaselineFinish) {
            return
        }
        var b8 = b9.BaselineStart.valueOf(),ce = b9.BaselineFinish.valueOf();
        if (b8 >= ce || b9.Summary) {
            return
        }
        var cd = this.control,ca = cd.gantt,b7 = cb.taskDiv.ownerDocument.createElement("div");
        cc = cc ? cc : ca.getScale();
        cb[this.name] = b7;
        var cf = cd.taskHeight;
        b7.style.cssText = "position:absolute;font-size:0px;z-index:100;left:" + (b8 - b9.Start.valueOf()) / cc + "px;width:" + ((ce - b8) / cc) + al[15] + (Math.ceil(cd.taskPadding / 2) + cf / 2) + al[28] + cf / 2 + "px;";
        var cg = cd.getTaskStyle(b9);
        if (cg.trackBarStyle) {
            ai(b7.style, cg.trackBarStyle)
        }
        cb.taskDiv.appendChild(b7)
    },onUpdate:function(b9, b7, cc) {
        if (!b9.BaselineStart || !b9.BaselineFinish) {
            return
        }
        var b8 = this.control.gantt,ce = b9.BaselineStart,ca = b9.BaselineFinish;
        if (!ce || !ca || ce.valueOf() >= ca.valueOf() || b9.Summary) {
            this.remove(b9, b7);
            return
        }
        var cd = b7[this.name];
        if (!cd) {
            this.show(b9, b7)
        } else {
            if (z(cc, al[115])) {
                this.remove(b9, b7);
                this.show(b9, b7);
                return
            }
            var cb = cd.style;
            if (z(cc, al[111]) || z(cc, al[110])) {
                cb.width = ((ca - ce) / b8.getScale()) + "px"
            }
            if (z(cc, al[127]) || z(cc, al[111])) {
                cb.left = ((ce - b9.Start.valueOf()) / b8.getScale()) + "px"
            }
        }
    },getTooltip:function(b8, b7, ca, cc) {
        if (cc.target != b7[this.name] || !this.control.taskNoticeFields) {
            return false
        }
        var cb = this.control;
        if (ca && ca.bindObject == b8 && ca.bindType == al[148]) {
            return false
        }
        var b9 = cb.getTaskTooltipContent(b8, cb.tooltipTitle.task, cb.taskTrackingNoticeFields.split(","));
        ca.bindObject = b8;
        ca.bindType = al[148];
        ca.setContent(b9);
        return true
    },onScale:function(b8, b7, b9) {
        var ca = b7[this.name];
        if (ca) {
            ca.style.width = ((b8.BaselineFinish - b8.BaselineStart) / b9) + "px";
            ca.style.left = ((b8.BaselineStart - b8.Start.valueOf()) / b9) + "px"
        }
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    function aW() {
    }

    aW.prototype = new P();
    ai(aW.prototype, {initialize:function(b7) {
        if (!b7.gantt.isTracking) {
            return false
        }
        ai(this, {control:b7,name:"MilestoneTrackHead"});
        return true
    },show:function(b8, ca) {
        if (!b8.BaselineStart || !b8.BaselineFinish) {
            return
        }
        var b7 = b8.BaselineStart.valueOf(),cd = b8.BaselineFinish.valueOf();
        if (b7 != cd) {
            return
        }
        var cb = this.control,b9 = cb.gantt;
        var cc = ca[this.name] = ca.taskDiv.ownerDocument.createElement("img");
        cc.style.cssText = al[17] + (cb.taskHeight - 1) + al[16] + (-Math.floor((cb.taskHeight - 1) / 2)) + al[15] + Math.ceil(cb.taskPadding / 2) + al[14];
        var cf = b9.imgPath + "task_head_3_hollow" + b9.imgType;
        var ce = cb.getTaskStyle(b8);
        if (ce.milestoneTrackImage) {
            cf = ce.milestoneTrackImage
        }
        bq(cc, cf);
        ca.taskDiv.appendChild(cc)
    },getTooltip:function(b8, b7, ca, cc) {
        if (cc.target != b7[this.name] || !this.control.taskNoticeFields) {
            return false
        }
        var cb = this.control;
        if (ca.bindObject == b8 && ca.bindType == al[148]) {
            return false
        }
        var b9 = cb.getTaskTooltipContent(b8, cb.tooltipTitle.milestone, cb.taskTrackingNoticeFields.split(","));
        ca.bindObject = b8;
        ca.bindType = al[148];
        ca.setContent(b9);
        return true
    },onUpdate:function(b9, b7, cb) {
        if (!b9.BaselineStart || !b9.BaselineFinish) {
            return
        }
        var b8 = this.control.gantt,cd = b9.BaselineStart,ca = b9.BaselineFinish;
        if (!cd || !ca || cd.valueOf() != ca.valueOf()) {
            this.remove(b9, b7);
            return
        }
        if (z(cb, al[115])) {
            this.remove(b9, b7);
            this.show(b9, b7);
            return
        }
        var cc = b7[this.name];
        if (!cc) {
            this.show(b9, b7)
        }
    },remove:function(b8, b7) {
        h(b7[this.name]);
        delete b7[this.name]
    }});
    var ae = function(b7) {
        return new RegExp(b7, "i").test(location.href)
    };
    if (!ae(aj(am, false))) {
        return false
    }
    ai(window, {SFGlobal:M,SFEvent:aT,SFAjax:aE,SFConfig:aq,SFImgLoader:aB,SFWorkingCalendar:ar,SFDragObject:q,SFData:T,SFDataElement:aV,SFDataTreeElement:bZ,SFDataTask:p,SFDataLink:aX,SFDataAssignment:b,SFDataResource:X,SFDataRender:aA,SFDataAdapter:aD,SFDataXmlBase:bt,SFDataXml:bX,SFDataProject:ak,SFDataComponent:Y,SFDataCalculateTimeComponent:af,SFDataOutlineComponent:g,SFDataIDComponent:b4,SFDataReadOnlyComponent:bo,SFDataLogging:Z,SFGantt:ao,SFGanttControl:J,SFGanttCalendarItem:d,SFMenuItem:ax,SFGanttAutoResizeControl:a9,SFGanttBodyHeightControl:bS,SFGanttCalDiv:E,SFGanttCalendarControl:Q,SFGanttChangeEventControl:ba,SFGanttCollapseControl:K,SFGanttCursorControl:L,SFGanttDragResizeControl:ag,SFGanttDragZoomControl:a,SFGanttElementList:aG,SFGanttElementSelectControl:bJ,SFGanttFieldList:an,SFGanttHelpLinkControl:r,SFGanttLayoutControl:bp,SFGanttLinksMap:F,SFGanttListScrollNotice:aC,SFGanttLogoControl:bL,SFGanttContextMenuControl:bG,SFGanttDefaultMenuControl:be,SFGanttPrintControl:bK,SFGanttScrollControl:bu,SFGanttScrollerControl:O,SFGanttDivScroller:b3,SFGanttTimeScroller:N,SFGanttSelectTaskOperateControl:bN,SFGanttSizeLimitControl:bd,SFGanttTasksMap:o,SFGanttTimeControl:bw,SFGanttMapPanel:bm,SFGanttTimePanel:bc,SFGanttTimeLine:R,SFGanttTimeScrollNotice:bs,SFGanttTimeSegmentation:bv,SFGanttTooltipControl:aY,SFGanttViewItemsControl:W,SFGanttWorkingMask:bI,SFGanttZoomControl:b6,SFGanttField:bO,SFGanttFieldBool:at,SFGanttFieldPercent:ah,SFGanttFieldElement:V,SFGanttFieldSelected:bV,SFGanttFieldLongText:U,SFGanttFieldDateTime:S,SFGanttFieldDuration:G,SFGanttFieldSelecter:bM,SFGanttFieldTreeName:aR,SFGanttFieldIcon:H,SFGanttMapItem:P,SFGanttMapMilestoneHead:aU,SFGanttMapSummaryHead:aJ,SFGanttMapBarSummary:t,SFGanttMapBarNormal:ap,SFGanttMapText:bb,SFGanttMapResize:b5,SFGanttMapPercentChange:I,SFGanttMapPercent:ay,SFGanttMapBarTrack:aF,SFGanttMapMilestoneTrackHead:aW});
    window._SFGantt_config = {SFGlobal:{weekStrs:[aj("7BCL"),aj("7jGm"),aj("7jOy"),aj("7jGv"),aj("7xSB"),aj("7jO4"),aj("7w4T")]},SFData:{autoCalculateTime:true,initComponents:"SFDataCalculateTimeComponent,SFDataReadOnlyComponent",taskReadonlyIgnoreProperty:al[11],resourceReadonlyIgnoreProperty:al[11],linkReadonlyIgnoreProperty:al[10],assignmentReadonlyIgnoreProperty:al[10]},SFDataProject:{saveChange:false},SFDataXml:{saveChange:true},SFGantt:{imgPath:"img/",listWidth:200,imgType:".gif",headHeight:36,footHeight:17,spaceWidth:8,idCellWidth:36,idCellBgColor:al[9],listFocusColor:al[27],itemHeight:24,itemWidth:6,fontSize:12,bodyBgColor:al[64],headBgColor:al[9],borderColor:"#CDCDCD",columnBarColor:al[9],bottomBgColor:al[9],viewEnlargeHeight:25,viewBufferHeight:1000,taskFieldNames:"StatusIcon,Name,Start,Finish",taskIdFieldNames:"Empty",isTracking:false,menuText:{ZoomIn:aj("7xSkxZT7,CYaBGTU"),ZoomOut:aj("7xSkxZT7,U2FBHD6"),FocusIntoView:aj("8jaSwnvF,k,XBErO"),AddTask:aj("7B8Wwq5P,k,XBErO"),DeleteTask:aj("7wGGxoz3,k,XBErO"),AddTasksLinks:aj("8xykw1H4,k,XBErO"),RemoveTasksLinks:aj("7wi6w4nd_yUaBU5S"),UpgradeTask:aj("7watwK16"),DegradeTask:aj("8xKzwK16"),ShowChart:aj("7BGkwJfP,y,aC0HV"),HideChart:aj("8xO0xYrk,y,aC0HV"),ShowList:aj("7BGkwJfP,xozC0HV"),HideList:aj("8xO0xYrk,xozC0HV"),Help:aj("7jalwIf7,,oKBErW"),About:aj("7w4Zwa1j,yItBVfSyu0kwiBFAlkg")},showScroller:true,noticeDelete:aj("7SqUxZH3_jgdBEjNy8WTw,doAFoICBPs0Vr5_RpKxNfk0UW68TFhB0KnD2RW_8FFyJ,NxqdZxbVExoU7wK757jWAxZXA,xo6CFnRzgiw"),noticeReadonly:aj("8wmvwavC,kwiB1jtxwSZwRRDAHQBCzv9,y1G0wZdxe1Z,kSd8BVACniyDWxo_xRAybsWyY_GxqhVx2Msy4Jd"),taskStyle:{TaskNormal:{barStyle:{border:"solid 1px #0000FF",backgroundImage:"url(${/SFGantt/imgPath}$grid_blue${/SFGantt/imgType}$)"},summaryBarStyle:{backgroundColor:al[48],border:al[19]},percentBarStyle:{backgroundColor:al[48]},trackBarStyle:{border:al[19],backgroundImage:"url(${/SFGantt/imgPath}$grid_black${/SFGantt/imgType}$)"},milestoneImage:al[8],summaryImage:al[7],milestoneTrackImage:"${/SFGantt/imgPath}$task_head_3_hollow${/SFGantt/imgType}$",listStyle:{backgroundColor:al[64]},listSelectedStyle:{backgroundColor:al[27]}},TaskImportant:{barStyle:{border:"solid 1px #FF0000",backgroundImage:"url(${/SFGantt/imgPath}$grid_red${/SFGantt/imgType}$)"},summaryBarStyle:{backgroundColor:al[48],border:al[19]},percentBarStyle:{backgroundColor:al[48]},milestoneImage:al[8],summaryImage:al[7],listStyle:{backgroundColor:"red"},listSelectedStyle:{backgroundColor:"red"}}},linkStyle:{BlueNormal:{lineStyle:{borderStyle:al[43],borderColor:"blue"},arrayImage:al[6]},BlueDashed:{lineStyle:{borderStyle:"dashed",borderColor:"blue"},arrayImage:al[6]},RedNormal:{lineStyle:{borderStyle:al[43],borderColor:"red"},arrayImage:al[5]},RedDashed:{lineStyle:{borderStyle:"dashed",borderColor:"red"},arrayImage:al[5]},BlackNormal:{lineStyle:{borderStyle:al[43],borderColor:"black"},arrayImage:al[4]},BlackDashed:{lineStyle:{borderStyle:"dashed",borderColor:"black"},arrayImage:al[4]}}},SFGanttTasksMap:{tooltipTitle:{summary:aj("7Bq8xZnW"),milestone:aj("8wCywJvg,TQt"),task:aj("7jShwn10"),progress:aj("8jiBwq15"),tracking:aj("7Ci4xaHY,yEWBEfz"),link:aj("8xykw1H4")},taskStyle:al[23],taskBarField:"name",taskNoticeFields:"name,Start,Finish,Duration",taskProgressNoticeFields:"name,ActualStart,ActualFinish,ActualDuration,PercentComplete",taskTrackingNoticeFields:"name,BaselineStart,BaselineFinish",linkAddNoticeFields:al[3]},SFGanttElementList:{elementStyle:al[23]},SFGanttLinksMap:{tooltipTitle:{link:aj("7jShwn10_yUaBU5S")},linkNoticeFields:al[3],linkStyle:"BlueNormal"},SFGanttCalDiv:{calNum:2},SFMenu:{tableStyle:{border:"solid 1px #A4A4A4",backgroundColor:al[64]}},SFTooltip:{divStyle:{fontSize:"12px",backgroundColor:al[2],border:al[19]}},SFGanttTimeSegmentation:{lineStyle:{borderLeft:al[25]}},SFGanttTimeScrollNotice:{divStyle:{fontSize:"13px",backgroundColor:al[2],padding:"3px",border:al[1]},dateFormat:al[0]},SFGanttTimeLine:{lineStyle:{width:"1px",borderStyle:al[43],borderColor:"red",borderLeftWidth:"1px",borderRightWidth:"1px",backgroundColor:al[64]},tooltipFormat:al[0]},SFGanttListScrollNotice:{divStyle:{backgroundColor:al[2],padding:"0px",border:al[1],fontSize:"12px"},taskFields:"UID,name"},SFGanttField:{taskFieldTexts:{UID:aj("7CmtxZLb,xET"),ID:aj("7T0Iwq9q"),Name:aj("7jShwn10,yIpBmfd"),OutlineNumber:aj("7y0NwK1H"),StatusIcon:aj("7QOcw1PW"),Duration:aj("7zCLw29,"),Start:aj("7zWmwprg,CkSCFfh"),Finish:aj("7yeyw1vl,CkSCFfh"),Notes:aj("7y0tw4b7"),ClassName:aj("7Cmdwq9k"),Critical:aj("7w4ZxofD"),Selected:aj("8wmvwavC"),Resource:aj("8j4qw41l,yIpBmfd"),PercentComplete:aj("7yeyw1vl,SsaBEjzxPuD"),ActualStart:aj("7yeExoza,,2cBGf2xOOlxCNh"),ActualFinish:aj("7yeyw1vl_hkPBW1RxOOlxCNh"),ActualDuration:aj("7yeExoza,,kBBVzM"),BaselineStart:aj("7Ci4xaHY,yEWBEfzxAivwDN2AWcdDBrJ"),BaselineFinish:aj("7Ci4xaHY,yEWBEfzxgeCwSlMAWcdDBrJ"),ConstraintType:aj("7TOMw2D,,UMXBF52"),ConstraintDate:aj("7TOMw2D,,CkSCFfh")},linkFieldTexts:{Type:aj("7TqhwoHg"),FromTask:aj("7jS,"),ToTask:aj("7wGW")},linkTypes:[aj("7yeyw1vlG1cKr4b_cnR_ILT"),aj("7yeyw1vlG1cYo4XUaXR_LbT"),aj("7zWmwprgG1cKr4b_cnRCILT"),aj("7zWmwprgG1cYo4XUaXRCLbT")],constraintTypes:[aj("8j8ww2r8_kgmBGXq"),aj("8j8ww2zv_kgmBGXq"),aj("7zirxpTQ,,2cBGf2xwa7"),aj("7zirxpTQ,zAoBUj7xwa7"),aj("7jGzwqHs,CkFB1r5DHodwEhtAHcy"),aj("7jGzwqHs,Cs0B1r5DHodwEhtAHcy"),aj("7jGzwqHs,CkFB1r5DHodwDp3AVg1"),aj("7jGzwqHs,Cs0B1r5DHodwDp3AVg1")],boolTypes:[aj("7xmM"),aj("7BGV")],dateShowFormat:al[0],dateInputFormat:"yyyy-MM-dd HH:mm:ss",noticeWrongFormat:aj("7Cmiwq9k,kopBW1Qxf0d"),durationFormat:aj("NrnKlZ24oTdA1F,TdfE"),tooltipConstraint:aj("7CaKwa5Q,xw7BVz0y8W9wBRjAW,ICz5LJ638F3bEzg9h,CCH8Sd8VOEX"),tooltipPercentComplete:aj("7CaKwa5Q,xw7BFzVAnEf91Fbq5Yvto"),noticeEmptyTaskField:aj("7jShwn10,yE5R9ERmtnUiCSSu1eI"),noticeEmptyLinkField:aj("8xykw1H4,yE5R9ERmtnUiCSSu1eI")},SFGanttCalendarItem:{formats:{Minute15:"mm",Hour:"M-d HH",Hour2:"HH",Hour6:"HH",Dat:aj("X08CZVg5gTdL1,iRRrDemxT"),Dat1:"d",Day:"ddd",Day3:"d",Day7:"d",Week:aj("ivJfVtjOod7Cv,iRxOOU"),Month:aj("ivLLlqei,C2k"),Month1:"M",Quarter:aj("ivJfVtjOonkIzzISj99UlTH"),Quarter1:"\\Qq",Quarter2:"\\Hhhh",Year:aj("ivJfVtjOoZ"),Year1:"yyyy",Year5:"yyyy",Year10:"yyyy"}}};
    bf();
    au()
}
SFNS();